Index: src/SynTree/Expression.cc
===================================================================
--- src/SynTree/Expression.cc	(revision d908563f67f11148f27b808eadf9cdd55d2df4e3)
+++ src/SynTree/Expression.cc	(revision 0e315a5bdd9f4a2506c85cc3c18350e2b93b270c)
@@ -610,5 +610,5 @@
 	computeResult();
 }
-StmtExpr::StmtExpr( const StmtExpr & other ) : Expression( other ), statements( other.statements->clone() ) {
+StmtExpr::StmtExpr( const StmtExpr & other ) : Expression( other ), statements( other.statements->clone() ), resultExpr( other.resultExpr ) {
 	cloneAll( other.returnDecls, returnDecls );
 	cloneAll( other.dtors, dtors );
Index: src/SynTree/Expression.h
===================================================================
--- src/SynTree/Expression.h	(revision d908563f67f11148f27b808eadf9cdd55d2df4e3)
+++ src/SynTree/Expression.h	(revision 0e315a5bdd9f4a2506c85cc3c18350e2b93b270c)
@@ -62,5 +62,5 @@
 	InferredParams inferParams;       ///< Post-resolution inferred parameter slots
 	std::vector<UniqueId> resnSlots;  ///< Pre-resolution inferred parameter slots
-	
+
 	// xxx - should turn inferParams+resnSlots into a union to save some memory
 
@@ -744,4 +744,7 @@
 	std::list< Expression * > dtors; // destructor(s) for return variable(s)
 
+	// readonly
+	ExprStmt * resultExpr = nullptr;
+
 	StmtExpr( CompoundStmt * statements );
 	StmtExpr( const StmtExpr & other );
