Index: src/GenPoly/Box.cc
===================================================================
--- src/GenPoly/Box.cc	(revision 4615ac81401b8a87620dad09deac63435bd06109)
+++ src/GenPoly/Box.cc	(revision 2d80111cda56c1eaa64c85ead71201dfe6b1b5b8)
@@ -725,5 +725,5 @@
 			if ( ! needsBoxing( param, arg->result, exprTyVars, env ) ) return;
 
-			if ( arg->result->get_lvalue() ) {
+			if ( arg->get_lvalue() ) {
 				// argument expression may be CFA lvalue, but not C lvalue -- apply generalizedLvalue transformations.
 				// if ( VariableExpr * varExpr = dynamic_cast< VariableExpr * >( arg ) ) {
Index: src/GenPoly/Lvalue.cc
===================================================================
--- src/GenPoly/Lvalue.cc	(revision 4615ac81401b8a87620dad09deac63435bd06109)
+++ src/GenPoly/Lvalue.cc	(revision 2d80111cda56c1eaa64c85ead71201dfe6b1b5b8)
@@ -363,5 +363,5 @@
 			int diff = depth1 - depth2;
 
-			if ( diff > 0 && ! srcType->get_lvalue() ) {
+			if ( diff > 0 && ! castExpr->arg->get_lvalue() ) {
 				// rvalue to reference conversion -- introduce temporary
 				// know that reference depth of cast argument is 0, need to introduce n temporaries for reference depth of n, e.g.
@@ -407,5 +407,5 @@
 					ret = new AddressExpr( ret );
 				}
-				if ( srcType->get_lvalue() && ! ResolvExpr::typesCompatible( srcType, strict_dynamic_cast<ReferenceType *>( destType )->base, SymTab::Indexer() ) ) {
+				if ( castExpr->arg->get_lvalue() && ! ResolvExpr::typesCompatible( srcType, strict_dynamic_cast<ReferenceType *>( destType )->base, SymTab::Indexer() ) ) {
 					// must keep cast if cast-to type is different from the actual type
 					castExpr->arg = ret;
Index: src/ResolvExpr/AlternativeFinder.cc
===================================================================
--- src/ResolvExpr/AlternativeFinder.cc	(revision 4615ac81401b8a87620dad09deac63435bd06109)
+++ src/ResolvExpr/AlternativeFinder.cc	(revision 2d80111cda56c1eaa64c85ead71201dfe6b1b5b8)
@@ -1135,5 +1135,5 @@
 	bool isLvalue( Expression *expr ) {
 		// xxx - recurse into tuples?
-		return expr->result && ( expr->result->get_lvalue() || dynamic_cast< ReferenceType * >( expr->result ) );
+		return expr->result && ( expr->get_lvalue() || dynamic_cast< ReferenceType * >( expr->result ) );
 	}
 
Index: src/SynTree/AddressExpr.cc
===================================================================
--- src/SynTree/AddressExpr.cc	(revision 4615ac81401b8a87620dad09deac63435bd06109)
+++ src/SynTree/AddressExpr.cc	(revision 2d80111cda56c1eaa64c85ead71201dfe6b1b5b8)
@@ -42,5 +42,5 @@
 AddressExpr::AddressExpr( Expression *arg ) : Expression(), arg( arg ) {
 	if ( arg->result ) {
-		if ( arg->result->get_lvalue() ) {
+		if ( arg->get_lvalue() ) {
 			// lvalue, retains all layers of reference and gains a pointer inside the references
 			set_result( addrType( arg->result ) );
Index: src/SynTree/Expression.cc
===================================================================
--- src/SynTree/Expression.cc	(revision 4615ac81401b8a87620dad09deac63435bd06109)
+++ src/SynTree/Expression.cc	(revision 2d80111cda56c1eaa64c85ead71201dfe6b1b5b8)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 25 22:21:48 2019
-// Update Count     : 61
+// Last Modified By : Andrew Beach
+// Last Modified On : Wed Aug  7 17:03:00 2019
+// Update Count     : 62
 //
 
@@ -61,4 +61,8 @@
 	delete env;
 	delete result;
+}
+
+bool Expression::get_lvalue() const {
+	return result->get_lvalue();
 }
 
Index: src/SynTree/Expression.h
===================================================================
--- src/SynTree/Expression.h	(revision 4615ac81401b8a87620dad09deac63435bd06109)
+++ src/SynTree/Expression.h	(revision 2d80111cda56c1eaa64c85ead71201dfe6b1b5b8)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 25 22:21:44 2019
-// Update Count     : 50
+// Last Modified By : Andrew Beach
+// Last Modified On : Wed Aug  7 16:56:00 2019
+// Update Count     : 51
 //
 
@@ -71,4 +71,5 @@
 	const Type * get_result() const { return result; }
 	void set_result( Type * newValue ) { result = newValue; }
+	bool get_lvalue() const;
 
 	TypeSubstitution * get_env() const { return env; }
