Index: src/CodeGen/CodeGenerator.cc
===================================================================
--- src/CodeGen/CodeGenerator.cc	(revision aa8f9dfd89cb8d2df9f8a3892703dfc427bce64a)
+++ src/CodeGen/CodeGenerator.cc	(revision 8c49c0e874fb58f676d7d0589d6897e2cf4e9581)
@@ -639,5 +639,5 @@
 	}
 
-	void CodeGenerator::visit( TupleExpr * tupleExpr ) {}
+	void CodeGenerator::visit( TupleExpr * tupleExpr ) { assert( false ); }
 
 	void CodeGenerator::visit( TypeExpr * typeExpr ) {}
@@ -655,8 +655,37 @@
 	}
 
+	void CodeGenerator::visit( CompoundLiteralExpr *compLitExpr ) {
+		assert( compLitExpr->get_type() && dynamic_cast< ListInit * > ( compLitExpr->get_initializer() ) );
+		output << "(" << genType( compLitExpr->get_type(), "" ) << ")";
+		compLitExpr->get_initializer()->accept( *this );
+	}
+
 	void CodeGenerator::visit( StmtExpr * stmtExpr ) {
-		output << "(";
-		stmtExpr->get_statements()->accept( *this );
-		output << ")";
+		std::list< Statement * > & stmts = stmtExpr->get_statements()->get_kids();
+		output << "({" << std::endl;
+		cur_indent += CodeGenerator::tabsize;
+		unsigned int numStmts = stmts.size();
+		unsigned int i = 0;
+		for ( Statement * stmt : stmts ) {
+			output << indent << printLabels( stmt->get_labels() );
+			if ( i+1 == numStmts ) {
+				// last statement in a statement expression needs to be handled specially -
+				// cannot cast to void, otherwise the expression statement has no value
+				if ( ExprStmt * exprStmt = dynamic_cast< ExprStmt * >( stmt ) ) {
+					exprStmt->get_expr()->accept( *this );
+					output << ";" << endl;
+					++i;
+					break;
+				}
+			}
+			stmt->accept( *this );
+			output << endl;
+			if ( wantSpacing( stmt ) ) {
+				output << endl;
+			} // if
+			++i;
+		}
+		cur_indent -= CodeGenerator::tabsize;
+		output << indent << "})";
 	}
 
Index: src/CodeGen/CodeGenerator.h
===================================================================
--- src/CodeGen/CodeGenerator.h	(revision aa8f9dfd89cb8d2df9f8a3892703dfc427bce64a)
+++ src/CodeGen/CodeGenerator.h	(revision 8c49c0e874fb58f676d7d0589d6897e2cf4e9581)
@@ -70,4 +70,5 @@
 		virtual void visit( ConditionalExpr *conditionalExpr );
 		virtual void visit( CommaExpr *commaExpr );
+		virtual void visit( CompoundLiteralExpr *compLitExpr );
 		virtual void visit( TupleExpr *tupleExpr );
 		virtual void visit( TypeExpr *typeExpr );
Index: src/CodeGen/GenType.cc
===================================================================
--- src/CodeGen/GenType.cc	(revision aa8f9dfd89cb8d2df9f8a3892703dfc427bce64a)
+++ src/CodeGen/GenType.cc	(revision 8c49c0e874fb58f676d7d0589d6897e2cf4e9581)
@@ -213,7 +213,4 @@
 			typeString = "_Atomic " + typeString;
 		} // if
-		if ( type->get_isAttribute() ) {
-			typeString = "__attribute(( )) " + typeString;
-		} // if
 	}
 } // namespace CodeGen
