Index: src/SynTree/Expression.cc
===================================================================
--- src/SynTree/Expression.cc	(revision 70b4ea20819273ae3006fe8505a5369e9b0111c8)
+++ src/SynTree/Expression.cc	(revision 1a69a908039a3c69a0d43b7089553d900c60df5b)
@@ -527,10 +527,10 @@
 }
 
-AsmExpr::AsmExpr( const AsmExpr & other ) : Expression( other ), inout( maybeClone( other.inout ) ), constraint( maybeClone( other.constraint ) ), operand( maybeClone( other.operand ) ) {}
+AsmExpr::AsmExpr( const AsmExpr & other ) : Expression( other ), inout( other.inout ), constraint( maybeClone( other.constraint ) ), operand( maybeClone( other.operand ) ) {}
 
 
 void AsmExpr::print( std::ostream & os, Indenter indent ) const {
 	os << "Asm Expression: " << std::endl;
-	if ( inout ) inout->print( os, indent+1 );
+	if ( !inout.empty() ) os <<  "[" << inout << "] ";
 	if ( constraint ) constraint->print( os, indent+1 );
 	if ( operand ) operand->print( os, indent+1 );
Index: src/SynTree/Expression.h
===================================================================
--- src/SynTree/Expression.h	(revision 70b4ea20819273ae3006fe8505a5369e9b0111c8)
+++ src/SynTree/Expression.h	(revision 1a69a908039a3c69a0d43b7089553d900c60df5b)
@@ -575,20 +575,11 @@
 class AsmExpr : public Expression {
   public:
-	Expression * inout;
+	std::string inout;
 	Expression * constraint;
 	Expression * operand;
 
-	AsmExpr( Expression * inout, Expression * constraint, Expression * operand ) : inout( inout ), constraint( constraint ), operand( operand ) {}
+	AsmExpr( const std::string * _inout, Expression * constraint, Expression * operand ) : inout( _inout ? *_inout : "" ), constraint( constraint ), operand( operand ) { delete _inout; }
 	AsmExpr( const AsmExpr & other );
-	virtual ~AsmExpr() { delete inout; delete constraint; delete operand; };
-
-	Expression * get_inout() const { return inout; }
-	void set_inout( Expression * newValue ) { inout = newValue; }
-
-	Expression * get_constraint() const { return constraint; }
-	void set_constraint( Expression * newValue ) { constraint = newValue; }
-
-	Expression * get_operand() const { return operand; }
-	void set_operand( Expression * newValue ) { operand = newValue; }
+	virtual ~AsmExpr() { delete constraint; delete operand; };
 
 	virtual AsmExpr * clone() const override { return new AsmExpr( * this ); }
