Index: benchmark/ctxswitch/cfa_cor.cfa
===================================================================
--- benchmark/ctxswitch/cfa_cor.cfa	(revision 427854baeaba2d97cb23623b6d3c3ad7f7b0dbdd)
+++ benchmark/ctxswitch/cfa_cor.cfa	(revision 1cfdee94f316eb368ff361b58a931a686ee54aba)
@@ -2,13 +2,14 @@
 #include <thread.hfa>
 
-#include "bench.h"
+#include "../bench.h"
 
-coroutine C {} c;
+coroutine C {};
 void main( __attribute__((unused)) C & ) {
-	while () {
+	for () {
 		suspend;
 	}
 }
 int main( int argc, char * argv[] ) {
+	C c;
 	BENCH_START()
 	BENCH(
Index: benchmark/ctxswitch/cfa_gen.cfa
===================================================================
--- benchmark/ctxswitch/cfa_gen.cfa	(revision 427854baeaba2d97cb23623b6d3c3ad7f7b0dbdd)
+++ benchmark/ctxswitch/cfa_gen.cfa	(revision 1cfdee94f316eb368ff361b58a931a686ee54aba)
@@ -1,23 +1,17 @@
 #include "../bench.h"
 
-typedef struct {
-	void * next;
-} C;
-
-void comain( C * c ) {
-	if ( __builtin_expect(c->next != 0, 1) ) goto *(c->next);
-	c->next = &&s1;
+generator G {};
+void main( G & ) {
 	for () {
-		return;
-	  s1: ;
+		suspend;
 	}
 }
 
 int main( int argc, char * argv[] ) {
+	G g;
 	BENCH_START()
-	C c = { 0 };
 	BENCH(
 		for ( times ) {
-			comain( &c );
+			resume( g );
 		},
 		result
