Index: src/InitTweak/GenInit.cc
===================================================================
--- src/InitTweak/GenInit.cc	(revision b3048d49aeb2ea2dd5d01939e5b683c1307b07d1)
+++ src/InitTweak/GenInit.cc	(revision 300d75b9c8dd241e0cb0107c7549e5c8400a1024)
@@ -41,4 +41,5 @@
 #include "SynTree/Type.h"          // for Type, ArrayType, Type::Qualifiers
 #include "SynTree/Visitor.h"       // for acceptAll, maybeAccept
+#include "Tuples/Tuples.h"         // for maybeImpure
 
 namespace InitTweak {
@@ -186,6 +187,6 @@
 			// need to resolve array dimensions in order to accurately determine if constexpr
 			ResolvExpr::findSingleExpression( arrayType->dimension, SymTab::SizeType->clone(), indexer );
-			// don't need to hoist dimension if it's a constexpr - only need to if there's potential for side effects.
-			if ( isConstExpr( arrayType->get_dimension() ) ) return;
+			// don't need to hoist dimension if it's definitely pure - only need to if there's potential for side effects.
+			if ( ! Tuples::maybeImpure( arrayType->dimension ) ) return;
 
 			ObjectDecl * arrayDimension = new ObjectDecl( dimensionName.newName(), storageClasses, LinkageSpec::C, 0, SymTab::SizeType->clone(), new SingleInit( arrayType->get_dimension() ) );
