Index: src/GenPoly/Specialize.cpp
===================================================================
--- src/GenPoly/Specialize.cpp	(revision 3df3a8f4dcb3e0d460f00091173a9d5682068922)
+++ src/GenPoly/Specialize.cpp	(revision 0bf03ba22468e758a0594078343f9671379485c3)
@@ -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 3df3a8f4dcb3e0d460f00091173a9d5682068922)
+++ src/InitTweak/FixInit.cpp	(revision 0bf03ba22468e758a0594078343f9671379485c3)
@@ -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 3df3a8f4dcb3e0d460f00091173a9d5682068922)
+++ tests/Makefile.am	(revision 0bf03ba22468e758a0594078343f9671379485c3)
@@ -52,5 +52,4 @@
 WFLGAS_OPT_LAX = \
 	alloc \
-	alloc2 \
 	array \
 	array-collections/array-raii-c \
@@ -98,5 +97,4 @@
 	concurrency/examples/boundedBufferEXT \
 	concurrency/examples/boundedBufferINT \
-	concurrency/futures/abandon \
 	concurrency/futures/multi \
 	concurrency/futures/select_future \
@@ -179,5 +177,4 @@
 	function-operator \
 	gmp \
-	heap \
 	identFuncDeclarator \
 	identParamDeclarator \
Index: tests/nowarn/unused.cfa
===================================================================
--- tests/nowarn/unused.cfa	(revision 3df3a8f4dcb3e0d460f00091173a9d5682068922)
+++ tests/nowarn/unused.cfa	(revision 0bf03ba22468e758a0594078343f9671379485c3)
@@ -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() {
