Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision b0dfbc4daacd2870c209f52e5219f7fd651b3024)
+++ src/SynTree/Declaration.h	(revision e612146ca26ec8e8adeb5426e498fe10f3523f40)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Andrew Beach
-// Last Modified On : Mon Aug 14 10:15:00 2017
-// Update Count     : 128
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sun Sep  3 19:24:06 2017
+// Update Count     : 131
 //
 
@@ -82,5 +82,5 @@
 	int scopeLevel = 0;
 
-	ConstantExpr *asmName;
+	Expression *asmName;
 	std::list< Attribute * > attributes;
 
@@ -97,6 +97,6 @@
 	DeclarationWithType * set_scopeLevel( int newValue ) { scopeLevel = newValue; return this; }
 
-	ConstantExpr *get_asmName() const { return asmName; }
-	DeclarationWithType * set_asmName( ConstantExpr *newValue ) { asmName = newValue; return this; }
+	Expression *get_asmName() const { return asmName; }
+	DeclarationWithType * set_asmName( Expression *newValue ) { asmName = newValue; return this; }
 
 	std::list< Attribute * >& get_attributes() { return attributes; }
Index: src/SynTree/Expression.h
===================================================================
--- src/SynTree/Expression.h	(revision b0dfbc4daacd2870c209f52e5219f7fd651b3024)
+++ src/SynTree/Expression.h	(revision e612146ca26ec8e8adeb5426e498fe10f3523f40)
@@ -9,8 +9,9 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Andrew Beach
-// Last Modified On : Fri Aug  8 11:54:00 2017
-// Update Count     : 44
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sun Sep  3 19:23:46 2017
+// Update Count     : 48
 //
+
 #pragma once
 
@@ -539,8 +540,8 @@
   public:
 	Expression * inout;
-	ConstantExpr * constraint;
+	Expression * constraint;
 	Expression * operand;
 
-	AsmExpr( Expression * inout, ConstantExpr * constraint, Expression * operand ) : inout( inout ), constraint( constraint ), operand( operand ) {}
+	AsmExpr( Expression * inout, Expression * constraint, Expression * operand ) : inout( inout ), constraint( constraint ), operand( operand ) {}
 	AsmExpr( const AsmExpr & other );
 	virtual ~AsmExpr() { delete inout; delete constraint; delete operand; };
@@ -549,6 +550,6 @@
 	void set_inout( Expression * newValue ) { inout = newValue; }
 
-	ConstantExpr * get_constraint() const { return constraint; }
-	void set_constraint( ConstantExpr * newValue ) { constraint = newValue; }
+	Expression * get_constraint() const { return constraint; }
+	void set_constraint( Expression * newValue ) { constraint = newValue; }
 
 	Expression * get_operand() const { return operand; }
Index: src/SynTree/Statement.cc
===================================================================
--- src/SynTree/Statement.cc	(revision b0dfbc4daacd2870c209f52e5219f7fd651b3024)
+++ src/SynTree/Statement.cc	(revision e612146ca26ec8e8adeb5426e498fe10f3523f40)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Aug 17 16:17:20 2017
-// Update Count     : 67
+// Last Modified On : Sun Sep  3 20:46:44 2017
+// Update Count     : 68
 //
 
@@ -52,5 +52,5 @@
 
 
-AsmStmt::AsmStmt( std::list<Label> labels, bool voltile, ConstantExpr *instruction, std::list<Expression *> output, std::list<Expression *> input, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels ) : Statement( labels ), voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ), gotolabels( gotolabels ) {}
+AsmStmt::AsmStmt( std::list<Label> labels, bool voltile, Expression *instruction, std::list<Expression *> output, std::list<Expression *> input, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels ) : Statement( labels ), voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ), gotolabels( gotolabels ) {}
 
 AsmStmt::AsmStmt( const AsmStmt & other ) : Statement( other ), voltile( other.voltile ), instruction( maybeClone( other.instruction ) ), gotolabels( other.gotolabels ) {
Index: src/SynTree/Statement.h
===================================================================
--- src/SynTree/Statement.h	(revision b0dfbc4daacd2870c209f52e5219f7fd651b3024)
+++ src/SynTree/Statement.h	(revision e612146ca26ec8e8adeb5426e498fe10f3523f40)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Aug 17 15:37:53 2017
-// Update Count     : 72
+// Last Modified On : Sun Sep  3 20:46:46 2017
+// Update Count     : 77
 //
 
@@ -98,10 +98,10 @@
   public:
 	bool voltile;
-	ConstantExpr *instruction;
+	Expression *instruction;
 	std::list<Expression *> output, input;
 	std::list<ConstantExpr *> clobber;
 	std::list<Label> gotolabels;
 
-	AsmStmt( std::list<Label> labels, bool voltile, ConstantExpr *instruction, std::list<Expression *> input, std::list<Expression *> output, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels );
+	AsmStmt( std::list<Label> labels, bool voltile, Expression *instruction, std::list<Expression *> output, std::list<Expression *> input, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels );
 	AsmStmt( const AsmStmt &other );
 	virtual ~AsmStmt();
@@ -109,19 +109,19 @@
 	bool get_voltile() { return voltile; }
 	void set_voltile( bool newValue ) { voltile = newValue; }
-	ConstantExpr *get_instruction() { return instruction; }
-	void set_instruction( ConstantExpr *newValue ) { instruction = newValue; }
-	std::list<Expression *> &get_output() { return output; }
-	void set_output( const std::list<Expression *> &newValue ) { output = newValue; }
-	std::list<Expression *> &get_input() { return input; }
+	Expression * get_instruction() { return instruction; }
+	void set_instruction( Expression * newValue ) { instruction = newValue; }
+	std::list<Expression *> & get_output() { return output; }
+	void set_output( const std::list<Expression *> & newValue ) { output = newValue; }
+	std::list<Expression *> & get_input() { return input; }
 	void set_input( const std::list<Expression *> &newValue ) { input = newValue; }
-	std::list<ConstantExpr *> &get_clobber() { return clobber; }
+	std::list<ConstantExpr *> & get_clobber() { return clobber; }
 	void set_clobber( const std::list<ConstantExpr *> &newValue ) { clobber = newValue; }
-	std::list<Label> &get_gotolabels() { return gotolabels; }
+	std::list<Label> & get_gotolabels() { return gotolabels; }
 	void set_gotolabels( const std::list<Label> &newValue ) { gotolabels = newValue; }
 
-	virtual AsmStmt *clone() const { return new AsmStmt( *this ); }
-	virtual void accept( Visitor &v ) { v.visit( this ); }
-	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-	virtual void print( std::ostream &os, int indent = 0 ) const;
+	virtual AsmStmt * clone() const { return new AsmStmt( *this ); }
+	virtual void accept( Visitor & v ) { v.visit( this ); }
+	virtual Statement * acceptMutator( Mutator & m ) { return m.mutate( this ); }
+	virtual void print( std::ostream & os, int indent = 0 ) const;
 };
 
