Index: src/InitTweak/GenInit.cc
===================================================================
--- src/InitTweak/GenInit.cc	(revision 1d379b59492afb906be580128996f3a4a6848c0b)
+++ src/InitTweak/GenInit.cc	(revision 5465377c6bb987eea8f67b8f796cfbf40a607894)
@@ -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() ) );
