Index: tests/concurrency/suspend_then.cfa
===================================================================
--- tests/concurrency/suspend_then.cfa	(revision 29e1582624c706a3698ac9e473a87cfdb343bf49)
+++ tests/concurrency/suspend_then.cfa	(revision 0244ab6cafd02e729678c8d7bcacd8a5061b4e2d)
@@ -19,10 +19,10 @@
 #endif
 
-#if !defined(TEST_FOREVER)
+#if ! defined(TEST_FOREVER)
 	static inline void print(const char * const text ) {
 		write( STDOUT_FILENO, text, strlen(text) );
 	}
 #else
-	static inline void print(Printer & this, const char * const text ) {}
+	static inline void print( Printer & this, const char * const text ) {}
 #endif
 
@@ -33,27 +33,25 @@
 
 void store(Coroutine & cor) {
-	__atomic_store_n(&the_cor, &cor, __ATOMIC_SEQ_CST);
+	__atomic_store_n( &the_cor, &cor, __ATOMIC_SEQ_CST );
 }
 
-Coroutine * take(void) {
+Coroutine * take( void ) {
 	Coroutine * val = 0p;
-	Coroutine * ret = __atomic_exchange_n(&the_cor, val, __ATOMIC_SEQ_CST);
-	assert(!ret || !the_cor);
+	Coroutine * ret = __atomic_exchange_n( &the_cor, val, __ATOMIC_SEQ_CST );
+	assert( ! ret || ! the_cor );
 	return ret;
 }
 
-void main(Coroutine& this) {
-	this.i = 0;
+void main( Coroutine & this ) with( this ) {
 	suspend;
-	for(;TEST(this.i < N); this.i++) {
-
-		print("C - Suspending\n");
+	for( i = 0; TEST( i < N ); i++ ) {
+		print( "C - Suspending\n" );
 		suspend{
-			print("C - Publishing\n");
-			assert(!the_cor);
+			print( "C - Publishing\n" );
+			assert( ! the_cor );
 			store( this );
 		}
-		assert(!the_cor);
-		print("C - Back\n");
+		assert( ! the_cor );
+		print( "C - Back\n" );
 		KICK_WATCHDOG;
 		yield();
@@ -66,12 +64,11 @@
 void main( Thread & ) {
 	Coroutine * mine = 0p;
-	while(!done) {
+	while ( ! done ) {
 		yield();
+		mine = take();
+		if ( ! mine ) continue;
 
-		mine = take();
-		if(!mine) continue;
-
-		print("T - took\n");
-		resume(*mine);
+		print( "T - took\n" );
+		resume( *mine );
 	}
 }
@@ -81,6 +78,11 @@
 	processor p[2];
 	Coroutine c;
-	resume(c); // Prime the coroutine to avoid one of the threads being its starter
+	resume( c ); // Prime the coroutine to avoid one of the threads being its starter
+
+	#pragma GCC diagnostic push
+	#pragma GCC diagnostic ignored "-Wdangling-pointer"	// this assignment is ok
 	the_cor = &c;
+	#pragma GCC diagnostic pop
+
 	{
 		Thread t[2];
