Index: libcfa/src/concurrency/kernel/fwd.hfa
===================================================================
--- libcfa/src/concurrency/kernel/fwd.hfa	(revision ba068c0596ffdd3cbcff6d50f6cbacd233a4c9fc)
+++ libcfa/src/concurrency/kernel/fwd.hfa	(revision c4024b46e673f27fbe00a125abbcd49efa50c164)
@@ -118,5 +118,5 @@
 		// Yield: yield N times
 		static inline void yield( size_t times ) {
-			for( times ) {
+			for ( times ) {
 				yield();
 			}
@@ -136,8 +136,8 @@
 
 			bool wait(single_sem & this) {
-				for() {
+				for () {
 					struct thread$ * expected = this.ptr;
-					if(expected == 1p) {
-						if(__atomic_compare_exchange_n(&this.ptr, &expected, 0p, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) {
+					if (expected == 1p) {
+						if (__atomic_compare_exchange_n(&this.ptr, &expected, 0p, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) {
 							return false;
 						}
@@ -145,5 +145,5 @@
 					else {
 						/* paranoid */ verify( expected == 0p );
-						if(__atomic_compare_exchange_n(&this.ptr, &expected, active_thread(), false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) {
+						if (__atomic_compare_exchange_n(&this.ptr, &expected, active_thread(), false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) {
 							park();
 							return true;
@@ -155,14 +155,14 @@
 
 			bool post(single_sem & this) {
-				for() {
+				for () {
 					struct thread$ * expected = this.ptr;
-					if(expected == 1p) return false;
-					if(expected == 0p) {
-						if(__atomic_compare_exchange_n(&this.ptr, &expected, 1p, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) {
+					if (expected == 1p) return false;
+					if (expected == 0p) {
+						if (__atomic_compare_exchange_n(&this.ptr, &expected, 1p, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) {
 							return false;
 						}
 					}
 					else {
-						if(__atomic_compare_exchange_n(&this.ptr, &expected, 0p, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) {
+						if (__atomic_compare_exchange_n(&this.ptr, &expected, 0p, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) {
 							unpark( expected );
 							return true;
@@ -195,8 +195,8 @@
 			// return true if the thread was parked
 			bool wait(oneshot & this) {
-				for() {
+				for () {
 					struct thread$ * expected = this.ptr;
-					if(expected == oneshot_FULFILLED) return false;
-					if(__atomic_compare_exchange_n(&this.ptr, &expected, active_thread(), false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) {
+					if (expected == oneshot_FULFILLED) return false;
+					if (__atomic_compare_exchange_n(&this.ptr, &expected, active_thread(), false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) {
 						park();
 						/* paranoid */ verify( this.ptr == oneshot_FULFILLED );
@@ -210,6 +210,6 @@
 			thread$ * post(oneshot & this, bool do_unpark = true) {
 				struct thread$ * got = __atomic_exchange_n( &this.ptr, oneshot_FULFILLED, __ATOMIC_SEQ_CST);
-				if( got == oneshot_ARMED || got == oneshot_FULFILLED ) return 0p;
-				if(do_unpark) unpark( got );
+				if ( got == oneshot_ARMED || got == oneshot_FULFILLED ) return 0p;
+				if (do_unpark) unpark( got );
 				return got;
 			}
@@ -255,11 +255,11 @@
 				/* paranoid */ verify( wait_ctx.ptr == oneshot_ARMED || wait_ctx.ptr == oneshot_FULFILLED );
 				// The future needs to set the wait context
-				for() {
+				for () {
 					struct oneshot * expected = this.ptr;
 					// Is the future already fulfilled?
-					if(expected == future_FULFILLED) return false; // Yes, just return false (didn't block)
+					if (expected == future_FULFILLED) return false; // Yes, just return false (didn't block)
 
 					// The future is not fulfilled, try to setup the wait context
-					if(__atomic_compare_exchange_n(&this.ptr, &expected, &wait_ctx, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) {
+					if (__atomic_compare_exchange_n(&this.ptr, &expected, &wait_ctx, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) {
 						return true;
 					}
@@ -276,5 +276,5 @@
 
 				// attempt to remove the context so it doesn't get consumed.
-				if(__atomic_compare_exchange_n( &this.ptr, &expected, future_ARMED, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) {
+				if (__atomic_compare_exchange_n( &this.ptr, &expected, future_ARMED, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) {
 					// we still have the original context, then no one else saw it
 					return false;
@@ -282,14 +282,14 @@
 
 				// expected == ARMED: future was never actually setup, just return
-				if( expected == future_ARMED ) return false;
+				if ( expected == future_ARMED ) return false;
 
 				// expected == FULFILLED: the future is ready and the context was fully consumed
 				// the server won't use the pointer again
 				// It is safe to delete (which could happen after the return)
-				if( expected == future_FULFILLED ) return true;
+				if ( expected == future_FULFILLED ) return true;
 
 				// expected == PROGRESS: the future is ready but the context hasn't fully been consumed
 				// spin until it is safe to move on
-				if( expected == future_PROGRESS ) {
+				if ( expected == future_PROGRESS ) {
 					while( this.ptr != future_FULFILLED ) Pause();
 					/* paranoid */ verify( this.ptr == future_FULFILLED );
@@ -310,9 +310,9 @@
 
 				// If the future isn't already fulfilled, let the server delete it
-				if( got == future_ARMED ) return false;
+				if ( got == future_ARMED ) return false;
 
 				// got == PROGRESS: the future is ready but the context hasn't fully been consumed
 				// spin until it is safe to move on
-				if( got == future_PROGRESS ) {
+				if ( got == future_PROGRESS ) {
 					while( this.ptr != future_FULFILLED ) Pause();
 					got = future_FULFILLED;
@@ -327,15 +327,19 @@
 			// from the server side, mark the future as fulfilled
 			// delete it if needed
+
 			thread$ * fulfil( future_t & this, bool do_unpark = true  ) {
-				for() {
+				for () {
 					struct oneshot * expected = this.ptr;
-					// was this abandoned?
+
 					#if defined(__GNUC__) && __GNUC__ >= 7
-						#pragma GCC diagnostic push
-						#pragma GCC diagnostic ignored "-Wfree-nonheap-object"
+					// SKULLDUGGERY: gcc bug does not handle push/pop for -Wfree-nonheap-object
+					//#pragma GCC diagnostic push
+					#pragma GCC diagnostic ignored "-Wfree-nonheap-object"
 					#endif
-						if( expected == future_ABANDONED ) { free( &this ); return 0p; }
+
+					if ( expected == future_ABANDONED ) { free( &this ); return 0p; }
+
 					#if defined(__GNUC__) && __GNUC__ >= 7
-						#pragma GCC diagnostic pop
+					//#pragma GCC diagnostic pop
 					#endif
 
@@ -346,6 +350,6 @@
 					// If there is no context then we can skip the in progress phase
 					struct oneshot * want = expected == future_ARMED ? future_FULFILLED : future_PROGRESS;
-					if(__atomic_compare_exchange_n(&this.ptr, &expected, want, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) {
-						if( expected == future_ARMED ) { return 0p; }
+					if (__atomic_compare_exchange_n(&this.ptr, &expected, want, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) {
+						if ( expected == future_ARMED ) { return 0p; }
 						thread$ * ret = post( *expected, do_unpark );
 						__atomic_store_n( &this.ptr, future_FULFILLED, __ATOMIC_SEQ_CST);
@@ -359,5 +363,5 @@
 			bool wait( future_t & this ) {
 				oneshot temp;
-				if( !setup(this, temp) ) return false;
+				if ( !setup(this, temp) ) return false;
 
 				// Wait context is setup, just wait on it
@@ -387,5 +391,5 @@
 				// if any are already satisfied return
 				for ( i; num_futures ) {
-					if( !setup(futures[i], temp) ) return futures[i];
+					if ( !setup(futures[i], temp) ) return futures[i];
 				}
 
@@ -413,17 +417,17 @@
 
 			#define __STATS__(in_kernel, ...) { \
-				if( !(in_kernel) ) disable_interrupts(); \
-				with( *__tls_stats() ) { \
+				if ( !(in_kernel) ) disable_interrupts(); \
+				with ( *__tls_stats() ) { \
 					__VA_ARGS__ \
 				} \
-				if( !(in_kernel) ) enable_interrupts(); \
+				if ( !(in_kernel) ) enable_interrupts(); \
 			}
 			#if defined(CFA_HAVE_LINUX_IO_URING_H)
 				#define __IO_STATS__(in_kernel, ...) { \
-					if( !(in_kernel) ) disable_interrupts(); \
-					with( *__tls_stats() ) { \
+					if ( !(in_kernel) ) disable_interrupts(); \
+					with ( *__tls_stats() ) { \
 						__VA_ARGS__ \
 					} \
-					if( !(in_kernel) ) enable_interrupts(); \
+					if ( !(in_kernel) ) enable_interrupts(); \
 				}
 			#else
@@ -436,3 +440,3 @@
 	}
 }
-#endif
+#endif // #endif
