Index: src/CodeGen/CodeGenerator.cc
===================================================================
--- src/CodeGen/CodeGenerator.cc	(revision bff227f73387fd7ed67a8a31545259b27d4ddc24)
+++ src/CodeGen/CodeGenerator.cc	(revision 8a6cf7efc5b53b47e66ba1a8f429bb5b7c181aa2)
@@ -661,4 +661,8 @@
 		extension( commaExpr );
 		output << "(";
+		if ( genC ) {
+			// arg1 of a CommaExpr is never used, so it can be safely cast to void to reduce gcc warnings.
+			commaExpr->set_arg1( new CastExpr( commaExpr->get_arg1() ) );
+		}
 		commaExpr->get_arg1()->accept( *this );
 		output << " , ";
@@ -724,5 +728,5 @@
 		for ( Statement * stmt : stmts ) {
 			output << lineDirective( stmt ) << indent;
-            output << printLabels( stmt->get_labels() );
+			output << printLabels( stmt->get_labels() );
 			if ( i+1 == numStmts ) {
 				// last statement in a statement expression needs to be handled specially -
@@ -769,10 +773,9 @@
 	void CodeGenerator::visit( ExprStmt * exprStmt ) {
 		assert( exprStmt );
-		Expression * expr = exprStmt->get_expr();
 		if ( genC ) {
 			// cast the top-level expression to void to reduce gcc warnings.
-			expr = new CastExpr( expr );
-		}
-		expr->accept( *this );
+			exprStmt->set_expr( new CastExpr( exprStmt->get_expr() ) );
+		}
+		exprStmt->get_expr()->accept( *this );
 		output << ";";
 	}
