Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision bd4d011a92b605ad83657c777542b73e1fad403f)
+++ src/Parser/ExpressionNode.cc	(revision fbcde641e97f117504d1c8e0bee89efe2630a6e8)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:17:07 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Mar  4 06:58:47 2017
-// Update Count     : 509
+// Last Modified On : Thu Mar 30 17:02:46 2017
+// Update Count     : 515
 //
 
@@ -356,9 +356,21 @@
 	// these types do not have associated type information
 	} else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl )  ) {
-		return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
+		if ( newDeclStructDecl->has_body() ) {
+			return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl ), maybeMoveBuild< Initializer >(kids) );
+		} else {
+			return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
+		} // if
 	} else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl )  ) {
-		return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
+		if ( newDeclUnionDecl->has_body() ) {
+			return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl ), maybeMoveBuild< Initializer >(kids) );
+		} else {
+			return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
+		} // if
 	} else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl )  ) {
-		return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
+		if ( newDeclEnumDecl->has_body() ) {
+			return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl ), maybeMoveBuild< Initializer >(kids) );
+		} else {
+			return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
+		} // if
 	} else {
 		assert( false );
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision bd4d011a92b605ad83657c777542b73e1fad403f)
+++ src/Parser/parser.yy	(revision fbcde641e97f117504d1c8e0bee89efe2630a6e8)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 17 15:42:22 2017
-// Update Count     : 2317
+// Last Modified On : Thu Mar 30 15:42:32 2017
+// Update Count     : 2318
 //
 
@@ -423,5 +423,5 @@
 	| postfix_expression DECR
 	  	{ $$ = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, $1 ) ); }
-	| '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99
+	| '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99, compound-literal
 		{ $$ = new ExpressionNode( build_compoundLiteral( $2, new InitializerNode( $5, true ) ) ); }
 	| postfix_expression '{' argument_expression_list '}' // CFA
