Index: src/InitTweak/GenInit.cc
===================================================================
--- src/InitTweak/GenInit.cc	(revision 16ba4a6fa0eb60a0cd27fb96882e37dbf94834dd)
+++ src/InitTweak/GenInit.cc	(revision b5344a335f711e226e5b4acaec4161a6fe4849ea)
@@ -202,8 +202,7 @@
 			}
 			// don't need to hoist dimension if it's definitely pure - only need to if there's potential for side effects.
-			// xxx - hoisting has no side effects anyways, so don't skip since we delay resolve	
-			// only skip in the most trivial case, which does not require resolve
-			if (dynamic_cast<ConstantExpr *>(arrayType->dimension)) return;
-			// if ( ! Tuples::maybeImpure( arrayType->dimension ) ) return;
+			// xxx - hoisting has no side effects anyways, so don't skip since we delay resolve
+			// still try to detect constant expressions
+			if ( ! Tuples::maybeImpure( arrayType->dimension ) ) return;
 
 			ObjectDecl * arrayDimension = new ObjectDecl( dimensionName.newName(), storageClasses, LinkageSpec::C, 0, Validate::SizeType->clone(), new SingleInit( arrayType->get_dimension() ) );
