Index: benchmark/Makefile.am
===================================================================
--- benchmark/Makefile.am	(revision 5a0230867be33e5412eec9b87a205ff4cf6cd0a4)
+++ benchmark/Makefile.am	(revision a5e2786fc7d6d9204cd8ccf2bd11d209c61ec807)
@@ -174,6 +174,5 @@
 	echo "array,attributes,empty,expression,io,monitor,operators,typeof" > $@
 	+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-array.make >> $@
-	echo "0," >> $@
-#	+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-attributes.make >> $@
+	+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-attributes.make >> $@
 	+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-empty.make >> $@
 	+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-expression.make >> $@
Index: src/GenPoly/Specialize.cpp
===================================================================
--- src/GenPoly/Specialize.cpp	(revision 5a0230867be33e5412eec9b87a205ff4cf6cd0a4)
+++ src/GenPoly/Specialize.cpp	(revision a5e2786fc7d6d9204cd8ccf2bd11d209c61ec807)
@@ -300,5 +300,7 @@
 		} ),
 		map_range<DWTVector>( newType->params, [&location, &paramNamer]( const ast::Type * type ) {
-			return new ast::ObjectDecl( location, paramNamer.newName(), ast::deepCopy( type ) );
+			auto param = new ast::ObjectDecl( location, paramNamer.newName(), ast::deepCopy( type ) );
+			param->attributes.push_back( new ast::Attribute( "unused" ) );
+			return param;
 		} ),
 		map_range<DWTVector>( newType->returns, [&location, &paramNamer]( const ast::Type * type ) {
Index: src/InitTweak/FixInit.cpp
===================================================================
--- src/InitTweak/FixInit.cpp	(revision 5a0230867be33e5412eec9b87a205ff4cf6cd0a4)
+++ src/InitTweak/FixInit.cpp	(revision a5e2786fc7d6d9204cd8ccf2bd11d209c61ec807)
@@ -70,4 +70,5 @@
 		ast::Linkage::Cforall
 	);
+	dstParam->attributes.push_back( new ast::Attribute( "unused" ) );
 	return new ast::FunctionDecl( loc,
 		fname,
Index: tests/Makefile.am
===================================================================
--- tests/Makefile.am	(revision 5a0230867be33e5412eec9b87a205ff4cf6cd0a4)
+++ tests/Makefile.am	(revision a5e2786fc7d6d9204cd8ccf2bd11d209c61ec807)
@@ -52,8 +52,5 @@
 WFLGAS_OPT_LAX = \
 	alloc \
-	alloc2 \
 	array \
-	array-collections/array-raii-c \
-	array-collections/array-raii-cfa \
 	array-collections/boxed \
 		array-collections/boxed% \
@@ -98,5 +95,4 @@
 	concurrency/examples/boundedBufferEXT \
 	concurrency/examples/boundedBufferINT \
-	concurrency/futures/abandon \
 	concurrency/futures/multi \
 	concurrency/futures/select_future \
@@ -179,5 +175,4 @@
 	function-operator \
 	gmp \
-	heap \
 	identFuncDeclarator \
 	identParamDeclarator \
Index: tests/array-collections/array-raii.hfa
===================================================================
--- tests/array-collections/array-raii.hfa	(revision 5a0230867be33e5412eec9b87a205ff4cf6cd0a4)
+++ tests/array-collections/array-raii.hfa	(revision a5e2786fc7d6d9204cd8ccf2bd11d209c61ec807)
@@ -59,4 +59,7 @@
         }
     }
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wuninitialized"
+  #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
     void case1() {
         ADECL1(x, float, 5)
@@ -68,4 +71,5 @@
         checkzero(x[0].f, x[1].f, x[2].f, x[3].f, x[4].f);
     }
+  #pragma GCC diagnostic pop
 
     writeJunkOnStack(5);
Index: tests/nowarn/unused.cfa
===================================================================
--- tests/nowarn/unused.cfa	(revision 5a0230867be33e5412eec9b87a205ff4cf6cd0a4)
+++ tests/nowarn/unused.cfa	(revision a5e2786fc7d6d9204cd8ccf2bd11d209c61ec807)
@@ -17,4 +17,13 @@
 enum () foo_t { foo };
 
+// on empty tuple,  __cleanup_dtor takes zero actions on its param and
+// _thunk's purpose is to ignore its param
+forall( Args... | { void foo( Args ); } )
+void wrap( Args ) {}
+void foo() {}
+void callWrap() {
+    wrap();
+}
+
 
 int main() {
