Index: src/SynTree/Expression.cc
===================================================================
--- src/SynTree/Expression.cc	(revision 50377a4f7ed2666db8f0a606e0e8573661478734)
+++ src/SynTree/Expression.cc	(revision 837ce062b91aebabe0e4639040b72bb6e66c8881)
@@ -33,12 +33,11 @@
 #include "GenPoly/Lvalue.h"
 
-Expression::Expression( Expression *_aname ) : result( 0 ), env( 0 ), argName( _aname ) {}
-
-Expression::Expression( const Expression &other ) : BaseSyntaxNode( other ), result( maybeClone( other.result ) ), env( maybeClone( other.env ) ), argName( maybeClone( other.get_argName() ) ), extension( other.extension ) {
+Expression::Expression() : result( 0 ), env( 0 ) {}
+
+Expression::Expression( const Expression &other ) : BaseSyntaxNode( other ), result( maybeClone( other.result ) ), env( maybeClone( other.env ) ), extension( other.extension ) {
 }
 
 Expression::~Expression() {
 	delete env;
-	delete argName;	// xxx -- there's a problem in cloning ConstantExpr I still don't know how to fix
 	delete result;
 }
@@ -55,5 +54,5 @@
 }
 
-ConstantExpr::ConstantExpr( Constant _c, Expression *_aname ) : Expression( _aname ), constant( _c ) {
+ConstantExpr::ConstantExpr( Constant _c ) : Expression(), constant( _c ) {
 	set_result( constant.get_type()->clone() );
 }
@@ -70,5 +69,5 @@
 }
 
-VariableExpr::VariableExpr( DeclarationWithType *_var, Expression *_aname ) : Expression( _aname ), var( _var ) {
+VariableExpr::VariableExpr( DeclarationWithType *_var ) : Expression(), var( _var ) {
 	assert( var );
 	assert( var->get_type() );
@@ -97,11 +96,11 @@
 }
 
-SizeofExpr::SizeofExpr( Expression *expr_, Expression *_aname ) :
-		Expression( _aname ), expr(expr_), type(0), isType(false) {
+SizeofExpr::SizeofExpr( Expression *expr_ ) :
+		Expression(), expr(expr_), type(0), isType(false) {
 	set_result( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) );
 }
 
-SizeofExpr::SizeofExpr( Type *type_, Expression *_aname ) :
-		Expression( _aname ), expr(0), type(type_), isType(true) {
+SizeofExpr::SizeofExpr( Type *type_ ) :
+		Expression(), expr(0), type(type_), isType(true) {
 	set_result( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) );
 }
@@ -123,11 +122,11 @@
 }
 
-AlignofExpr::AlignofExpr( Expression *expr_, Expression *_aname ) :
-		Expression( _aname ), expr(expr_), type(0), isType(false) {
+AlignofExpr::AlignofExpr( Expression *expr_ ) :
+		Expression(), expr(expr_), type(0), isType(false) {
 	set_result( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) );
 }
 
-AlignofExpr::AlignofExpr( Type *type_, Expression *_aname ) :
-		Expression( _aname ), expr(0), type(type_), isType(true) {
+AlignofExpr::AlignofExpr( Type *type_ ) :
+		Expression(), expr(0), type(type_), isType(true) {
 	set_result( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) );
 }
@@ -149,6 +148,6 @@
 }
 
-UntypedOffsetofExpr::UntypedOffsetofExpr( Type *type, const std::string &member, Expression *_aname ) :
-		Expression( _aname ), type(type), member(member) {
+UntypedOffsetofExpr::UntypedOffsetofExpr( Type *type, const std::string &member ) :
+		Expression(), type(type), member(member) {
 	assert( type );
 	set_result( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) );
@@ -168,6 +167,6 @@
 }
 
-OffsetofExpr::OffsetofExpr( Type *type, DeclarationWithType *member, Expression *_aname ) :
-		Expression( _aname ), type(type), member(member) {
+OffsetofExpr::OffsetofExpr( Type *type, DeclarationWithType *member ) :
+		Expression(), type(type), member(member) {
 	assert( member );
 	assert( type );
@@ -188,5 +187,5 @@
 }
 
-OffsetPackExpr::OffsetPackExpr( StructInstType *type, Expression *aname_ ) : Expression( aname_ ), type( type ) {
+OffsetPackExpr::OffsetPackExpr( StructInstType *type ) : Expression(), type( type ) {
 	assert( type );
 	set_result( new ArrayType( Type::Qualifiers(), new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), 0, false, false ) );
@@ -203,10 +202,10 @@
 }
 
-AttrExpr::AttrExpr( Expression *attr, Expression *expr_, Expression *_aname ) :
-		Expression( _aname ), attr( attr ), expr(expr_), type(0), isType(false) {
-}
-
-AttrExpr::AttrExpr( Expression *attr, Type *type_, Expression *_aname ) :
-		Expression( _aname ), attr( attr ), expr(0), type(type_), isType(true) {
+AttrExpr::AttrExpr( Expression *attr, Expression *expr_ ) :
+		Expression(), attr( attr ), expr(expr_), type(0), isType(false) {
+}
+
+AttrExpr::AttrExpr( Expression *attr, Type *type_ ) :
+		Expression(), attr( attr ), expr(0), type(type_), isType(true) {
 }
 
@@ -232,9 +231,9 @@
 }
 
-CastExpr::CastExpr( Expression *arg_, Type *toType, Expression *_aname ) : Expression( _aname ), arg(arg_) {
+CastExpr::CastExpr( Expression *arg_, Type *toType ) : Expression(), arg(arg_) {
 	set_result(toType);
 }
 
-CastExpr::CastExpr( Expression *arg_, Expression *_aname ) : Expression( _aname ), arg(arg_) {
+CastExpr::CastExpr( Expression *arg_ ) : Expression(), arg(arg_) {
 	set_result( new VoidType( Type::Qualifiers() ) );
 }
@@ -284,6 +283,6 @@
 }
 
-UntypedMemberExpr::UntypedMemberExpr( Expression * member, Expression *aggregate, Expression *_aname ) :
-		Expression( _aname ), member(member), aggregate(aggregate) {
+UntypedMemberExpr::UntypedMemberExpr( Expression * member, Expression *aggregate ) :
+		Expression(), member(member), aggregate(aggregate) {
 	assert( aggregate );
 }
@@ -321,6 +320,6 @@
 
 
-MemberExpr::MemberExpr( DeclarationWithType *member, Expression *aggregate, Expression *_aname ) :
-		Expression( _aname ), member(member), aggregate(aggregate) {
+MemberExpr::MemberExpr( DeclarationWithType *member, Expression *aggregate ) :
+		Expression(), member(member), aggregate(aggregate) {
 	assert( member );
 	assert( aggregate );
@@ -351,6 +350,6 @@
 }
 
-UntypedExpr::UntypedExpr( Expression *_function, const std::list<Expression *> &_args, Expression *_aname ) :
-		Expression( _aname ), function(_function), args(_args) {}
+UntypedExpr::UntypedExpr( Expression *function, const std::list<Expression *> &args ) :
+		Expression(), function(function), args(args) {}
 
 UntypedExpr::UntypedExpr( const UntypedExpr &other ) :
@@ -402,5 +401,5 @@
 }
 
-NameExpr::NameExpr( std::string name, Expression *_aname ) : Expression( _aname ), name(name) {
+NameExpr::NameExpr( std::string name ) : Expression(), name(name) {
 	assertf(name != "0", "Zero is not a valid name");
 	assertf(name != "1", "One is not a valid name");
@@ -417,6 +416,6 @@
 }
 
-LogicalExpr::LogicalExpr( Expression *arg1_, Expression *arg2_, bool andp, Expression *_aname ) :
-		Expression( _aname ), arg1(arg1_), arg2(arg2_), isAnd(andp) {
+LogicalExpr::LogicalExpr( Expression *arg1_, Expression *arg2_, bool andp ) :
+		Expression(), arg1(arg1_), arg2(arg2_), isAnd(andp) {
 	set_result( new BasicType( Type::Qualifiers(), BasicType::SignedInt ) );
 }
@@ -439,6 +438,6 @@
 }
 
-ConditionalExpr::ConditionalExpr( Expression * arg1, Expression * arg2, Expression * arg3, Expression *_aname ) :
-		Expression( _aname ), arg1(arg1), arg2(arg2), arg3(arg3) {}
+ConditionalExpr::ConditionalExpr( Expression * arg1, Expression * arg2, Expression * arg3 ) :
+		Expression(), arg1(arg1), arg2(arg2), arg3(arg3) {}
 
 ConditionalExpr::ConditionalExpr( const ConditionalExpr &other ) :
