Index: src/InitTweak/FixInit.cc
===================================================================
--- src/InitTweak/FixInit.cc	(revision b128d3e4ba865ad1a58f26770aa954b69ba89769)
+++ src/InitTweak/FixInit.cc	(revision 108f3cdb1c308290d06b0f98d2f61dcf43a681bc)
@@ -127,5 +127,5 @@
 
 			// don't go into other functions
-			virtual void visit( __attribute__((unused)) FunctionDecl *decl ) override {}
+			virtual void visit( FunctionDecl * ) override {}
 
 		  protected:
@@ -913,5 +913,8 @@
 		// of the error.  See C++ Reference 6.6 Jump Statements for details.
 		void InsertDtors::handleGoto( BranchStmt * stmt ) {
-			assert( stmt->get_target() != "" && "BranchStmt missing a label" );
+			// can't do anything for computed goto
+			if ( stmt->computedTarget ) return;
+
+			assertf( stmt->get_target() != "", "BranchStmt missing a label: %s", toString( stmt ).c_str() );
 			// S_L = lvars = set of objects in scope at label definition
 			// S_G = curVars = set of objects in scope at goto statement
Index: src/InitTweak/InitTweak.cc
===================================================================
--- src/InitTweak/InitTweak.cc	(revision b128d3e4ba865ad1a58f26770aa954b69ba89769)
+++ src/InitTweak/InitTweak.cc	(revision 108f3cdb1c308290d06b0f98d2f61dcf43a681bc)
@@ -497,10 +497,7 @@
 		using Visitor::visit;
 
-		virtual void visit( __attribute((unused)) ApplicationExpr *applicationExpr ) { isConstExpr = false; }
-		virtual void visit( __attribute((unused)) UntypedExpr *untypedExpr ) { isConstExpr = false; }
-		virtual void visit( NameExpr *nameExpr ) {
-			// xxx - temporary hack, because 0 and 1 really should be constexprs, even though they technically aren't in Cforall today
-			if ( nameExpr->get_name() != "0" && nameExpr->get_name() != "1" ) isConstExpr = false;
-		}
+		virtual void visit( ApplicationExpr * ) { isConstExpr = false; }
+		virtual void visit( UntypedExpr * ) { isConstExpr = false; }
+		virtual void visit( NameExpr * ) { isConstExpr = false; }
 		// virtual void visit( CastExpr *castExpr ) { isConstExpr = false; }
 		virtual void visit( AddressExpr *addressExpr ) {
@@ -509,8 +506,7 @@
 			if ( ! dynamic_cast< NameExpr * >( arg) && ! dynamic_cast< VariableExpr * >( arg ) && ! dynamic_cast< MemberExpr * >( arg ) && ! dynamic_cast< UntypedMemberExpr * >( arg ) ) isConstExpr = false;
 		}
-		virtual void visit( __attribute((unused)) LabelAddressExpr *labAddressExpr ) { isConstExpr = false; }
-		virtual void visit( __attribute((unused)) UntypedMemberExpr *memberExpr ) { isConstExpr = false; }
-		virtual void visit( __attribute((unused)) MemberExpr *memberExpr ) { isConstExpr = false; }
-		virtual void visit( __attribute((unused)) VariableExpr *variableExpr ) { isConstExpr = false; }
+		virtual void visit( UntypedMemberExpr * ) { isConstExpr = false; }
+		virtual void visit( MemberExpr * ) { isConstExpr = false; }
+		virtual void visit( VariableExpr * ) { isConstExpr = false; }
 		// these might be okay?
 		// virtual void visit( SizeofExpr *sizeofExpr );
@@ -523,11 +519,11 @@
 		// virtual void visit( LogicalExpr *logicalExpr );
 		// virtual void visit( ConditionalExpr *conditionalExpr );
-		virtual void visit( __attribute((unused)) TypeExpr *typeExpr ) { isConstExpr = false; }
-		virtual void visit( __attribute((unused)) AsmExpr *asmExpr ) { isConstExpr = false; }
-		virtual void visit( __attribute((unused)) UntypedValofExpr *valofExpr ) { isConstExpr = false; }
-		virtual void visit( __attribute((unused)) CompoundLiteralExpr *compLitExpr ) { isConstExpr = false; }
-		virtual void visit( __attribute((unused)) UntypedTupleExpr *tupleExpr ) { isConstExpr = false; }
-		virtual void visit( __attribute((unused)) TupleExpr *tupleExpr ) { isConstExpr = false; }
-		virtual void visit( __attribute((unused)) TupleAssignExpr *tupleExpr ) { isConstExpr = false; }
+		virtual void visit( TypeExpr * ) { isConstExpr = false; }
+		virtual void visit( AsmExpr * ) { isConstExpr = false; }
+		virtual void visit( UntypedValofExpr * ) { isConstExpr = false; }
+		virtual void visit( CompoundLiteralExpr * ) { isConstExpr = false; }
+		virtual void visit( UntypedTupleExpr * ) { isConstExpr = false; }
+		virtual void visit( TupleExpr * ) { isConstExpr = false; }
+		virtual void visit( TupleAssignExpr * ) { isConstExpr = false; }
 
 		bool isConstExpr;
