Index: src/GenPoly/Lvalue.cc
===================================================================
--- src/GenPoly/Lvalue.cc	(revision c20b0fea8f80f6ab679ab88acb8c39346313f093)
+++ src/GenPoly/Lvalue.cc	(revision 41fcd941e552062fa7dae8d4c0be131064ff92bb)
@@ -465,4 +465,13 @@
 					return ret;
 				}
+			} else if ( CastExpr * castExpr = dynamic_cast< CastExpr * > ( arg ) ) {
+				// need to move cast to pointer type out a level since address of pointer
+				// is not valid C code (can be introduced in prior passes, e.g., InstantiateGeneric)
+				if ( InitTweak::getPointerBase( castExpr->result ) ) {
+					addrExpr->arg = castExpr->arg;
+					castExpr->arg = addrExpr;
+					castExpr->result = new PointerType( Type::Qualifiers(), castExpr->result );
+					return castExpr;
+				}
 			}
 			return addrExpr;
