Index: benchmark/creation/cfa_cor.cfa
===================================================================
--- benchmark/creation/cfa_cor.cfa	(revision 26fd986f03393501efae80e424071cb9eedeaa81)
+++ benchmark/creation/cfa_cor.cfa	(revision 3ecfa1375dc1c82c8e9016c410bf10d133ebda26)
@@ -1,7 +1,14 @@
+#include <stdio.h>
+#include <coroutine.hfa>
+
 #include "bench.h"
 
-typedef struct {
-	void * next;
-} C;
+coroutine MyCoroutine {};
+void ?{}( MyCoroutine & this ) {
+#ifdef EAGER
+	resume( this );
+#endif
+}
+void main( MyCoroutine & ) {}
 
 int main( int argc, char * argv[] ) {
@@ -9,5 +16,5 @@
 	BENCH(
 		for ( times ) {
-			C c;
+			MyCoroutine c;
 		},
 		result
Index: benchmark/creation/cfa_gen.cfa
===================================================================
--- benchmark/creation/cfa_gen.cfa	(revision 26fd986f03393501efae80e424071cb9eedeaa81)
+++ benchmark/creation/cfa_gen.cfa	(revision 3ecfa1375dc1c82c8e9016c410bf10d133ebda26)
@@ -1,14 +1,9 @@
-#include <stdio.h>
-#include <coroutine.hfa>
-
 #include "bench.h"
 
-coroutine MyCoroutine {};
-void ?{}( MyCoroutine & this ) {
-#ifdef EAGER
-	resume( this );
-#endif
-}
-void main( MyCoroutine & ) {}
+struct C {
+	volatile int restart; // ensure compiler does not optimize away all the code
+};
+void ?{}( C & c ) { c.restart = 0; }
+void main( C & ) {}
 
 int main( int argc, char * argv[] ) {
@@ -16,5 +11,5 @@
 	BENCH(
 		for ( times ) {
-			MyCoroutine c;
+			 C c;
 		},
 		result
