Index: src/SynTree/Expression.cc
===================================================================
--- src/SynTree/Expression.cc	(revision 36ebd0388f8605c4fa18c69839c9a014c84e8fa2)
+++ src/SynTree/Expression.cc	(revision 630a82a5214317b27ab087ea8d7665b217527f07)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Wed Dec 09 14:10:29 2015
-// Update Count     : 34
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Apr  8 17:16:23 2016
+// Update Count     : 40
 //
 
@@ -22,4 +22,5 @@
 
 #include "Type.h"
+#include "Initializer.h"
 #include "Expression.h"
 #include "Declaration.h"
@@ -443,4 +444,21 @@
 
 
+CompoundLiteralExpr::CompoundLiteralExpr( Type * type, Initializer * initializer ) : type( type ), initializer( initializer ) {
+	add_result( type->clone() );
+}
+
+CompoundLiteralExpr::CompoundLiteralExpr( const CompoundLiteralExpr &other ) : Expression( other ), type( maybeClone( other.type ) ), initializer( maybeClone( other.initializer ) ) {}
+
+CompoundLiteralExpr::~CompoundLiteralExpr() {
+	delete initializer;
+	delete type;
+}
+
+void CompoundLiteralExpr::print( std::ostream &os, int indent ) const {
+	os << "Compound Literal Expression: " << std::endl;
+	if ( type ) type->print( os, indent + 2 );
+	if ( initializer ) initializer->print( os, indent + 2 );
+}
+
 
 std::ostream & operator<<( std::ostream & out, Expression * expr ) {
Index: src/SynTree/Expression.h
===================================================================
--- src/SynTree/Expression.h	(revision 36ebd0388f8605c4fa18c69839c9a014c84e8fa2)
+++ src/SynTree/Expression.h	(revision 630a82a5214317b27ab087ea8d7665b217527f07)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Wed Dec 09 14:10:21 2015
-// Update Count     : 19
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Apr  8 17:18:06 2016
+// Update Count     : 21
 //
 
@@ -557,4 +557,26 @@
 };
 
+/// CompoundLiteralExpr represents a C99 'compound literal'
+class CompoundLiteralExpr : public Expression {
+  public:
+	CompoundLiteralExpr( Type * type, Initializer * initializer );
+	CompoundLiteralExpr( const CompoundLiteralExpr &other );
+	~CompoundLiteralExpr();
+
+	Type * get_type() const { return type; }
+	void set_type( Type * t ) { type = t; }
+
+	Initializer * get_initializer() const { return initializer; }
+	void set_initializer( Initializer * i ) { initializer = i; }
+
+	virtual CompoundLiteralExpr *clone() const { return new CompoundLiteralExpr( *this ); }
+	virtual void accept( Visitor &v ) { v.visit( this ); }
+	virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); }
+	virtual void print( std::ostream &os, int indent = 0 ) const;
+  private:
+	Type * type;
+	Initializer * initializer;
+};
+
 std::ostream & operator<<( std::ostream & out, Expression * expr );
 
Index: src/SynTree/Mutator.cc
===================================================================
--- src/SynTree/Mutator.cc	(revision 36ebd0388f8605c4fa18c69839c9a014c84e8fa2)
+++ src/SynTree/Mutator.cc	(revision 630a82a5214317b27ab087ea8d7665b217527f07)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 17:28:20 2016
-// Update Count     : 12
+// Last Modified On : Fri Apr  1 18:05:16 2016
+// Update Count     : 16
 //
 
@@ -336,4 +336,11 @@
 }
 
+Expression *Mutator::mutate( CompoundLiteralExpr *compLitExpr ) {
+	mutateAll( compLitExpr->get_results(), *this );
+	compLitExpr->set_type( maybeMutate( compLitExpr->get_type(), *this ) );
+	compLitExpr->set_initializer( maybeMutate( compLitExpr->get_initializer(), *this ) );
+	return compLitExpr;
+}
+
 Type *Mutator::mutate( VoidType *voidType ) {
 	mutateAll( voidType->get_forall(), *this );
Index: src/SynTree/Mutator.h
===================================================================
--- src/SynTree/Mutator.h	(revision 36ebd0388f8605c4fa18c69839c9a014c84e8fa2)
+++ src/SynTree/Mutator.h	(revision 630a82a5214317b27ab087ea8d7665b217527f07)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 17:33:11 2016
-// Update Count     : 9
+// Last Modified On : Fri Apr  1 17:26:56 2016
+// Update Count     : 10
 //
 #include <cassert>
@@ -76,4 +76,5 @@
 	virtual Expression* mutate( AsmExpr *asmExpr );
 	virtual Expression* mutate( UntypedValofExpr *valofExpr );
+	virtual Expression* mutate( CompoundLiteralExpr *compLitExpr );
 
 	virtual Type* mutate( VoidType *basicType );
Index: src/SynTree/SynTree.h
===================================================================
--- src/SynTree/SynTree.h	(revision 36ebd0388f8605c4fa18c69839c9a014c84e8fa2)
+++ src/SynTree/SynTree.h	(revision 630a82a5214317b27ab087ea8d7665b217527f07)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 17:29:00 2016
-// Update Count     : 4
+// Last Modified On : Fri Apr  1 16:47:44 2016
+// Update Count     : 5
 //
 
@@ -81,4 +81,5 @@
 class AsmExpr;
 class UntypedValofExpr;
+class CompoundLiteralExpr;
 
 class Type;
Index: src/SynTree/Visitor.cc
===================================================================
--- src/SynTree/Visitor.cc	(revision 36ebd0388f8605c4fa18c69839c9a014c84e8fa2)
+++ src/SynTree/Visitor.cc	(revision 630a82a5214317b27ab087ea8d7665b217527f07)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 17:29:23 2016
-// Update Count     : 16
+// Last Modified On : Fri Apr  1 18:05:13 2016
+// Update Count     : 18
 //
 
@@ -284,4 +284,10 @@
 }
 
+void Visitor::visit( CompoundLiteralExpr *compLitExpr ) {
+	acceptAll( compLitExpr->get_results(), *this );
+	maybeAccept( compLitExpr->get_type(), *this );
+	maybeAccept( compLitExpr->get_initializer(), *this );
+}
+
 void Visitor::visit( VoidType *voidType ) {
 	acceptAll( voidType->get_forall(), *this );
Index: src/SynTree/Visitor.h
===================================================================
--- src/SynTree/Visitor.h	(revision 36ebd0388f8605c4fa18c69839c9a014c84e8fa2)
+++ src/SynTree/Visitor.h	(revision 630a82a5214317b27ab087ea8d7665b217527f07)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 17:33:35 2016
-// Update Count     : 6
+// Last Modified On : Fri Apr  1 17:26:55 2016
+// Update Count     : 7
 //
 
@@ -76,4 +76,5 @@
 	virtual void visit( AsmExpr *asmExpr );
 	virtual void visit( UntypedValofExpr *valofExpr );
+	virtual void visit( CompoundLiteralExpr *compLitExpr );
 
 	virtual void visit( VoidType *basicType );
