Index: src/GenPoly/Box.cc
===================================================================
--- src/GenPoly/Box.cc	(revision 06903509f799ad9b509246cc8b08bb77dcd2f1f4)
+++ src/GenPoly/Box.cc	(revision ad51cc235ed4478bb66e5a9ed5b6d98dbaef6a84)
@@ -833,4 +833,5 @@
 					deref->args.push_back( new CastExpr( new VariableExpr( param ), new PointerType( Type::Qualifiers(), arg->get_type()->clone() ) ) );
 					deref->result = arg->get_type()->clone();
+					deref->result->set_lvalue( true );
 					return deref;
 				} // if
Index: src/GenPoly/Lvalue.cc
===================================================================
--- src/GenPoly/Lvalue.cc	(revision 06903509f799ad9b509246cc8b08bb77dcd2f1f4)
+++ src/GenPoly/Lvalue.cc	(revision ad51cc235ed4478bb66e5a9ed5b6d98dbaef6a84)
@@ -321,4 +321,5 @@
 						delete ret->result;
 						ret->result = castExpr->result;
+						ret->result->set_lvalue( true ); // ensure result is lvalue
 						castExpr->env = nullptr;
 						castExpr->arg = nullptr;
@@ -388,4 +389,5 @@
 					// can remove cast if types are compatible, changing expression type to value type
 					ret->result = castExpr->result->clone();
+					ret->result->set_lvalue( true );  // ensure result is lvalue
 					castExpr->arg = nullptr;
 					delete castExpr;
