Index: src/ControlStruct/Mutate.cc
===================================================================
--- src/ControlStruct/Mutate.cc	(revision 3d26610b1bab2688ae61b5b0e34f63763ec3a35b)
+++ src/ControlStruct/Mutate.cc	(revision b368dd84ea84d33a0de73c6f989ade0c55c94e44)
@@ -27,16 +27,13 @@
 #include "SynTree/Visitor.h"       // for acceptAll
 
-using namespace std;
+namespace ControlStruct {
+	void fixLabels( std::list< Declaration * > & translationUnit ) {
+		PassVisitor<LabelFixer> lfix;
+		acceptAll( translationUnit, lfix );
+	}
 
-namespace ControlStruct {
-	void mutate( std::list< Declaration * > translationUnit ) {
-		// hoist initialization out of for statements
+	void hoistControlDecls( std::list< Declaration * > & translationUnit ) {
 		PassVisitor<ForExprMutator> formut;
-
-		// normalizes label definitions and generates multi-level exit labels
-		PassVisitor<LabelFixer> lfix;
-
 		mutateAll( translationUnit, formut );
-		acceptAll( translationUnit, lfix );
 	}
 } // namespace CodeGen
Index: src/ControlStruct/Mutate.h
===================================================================
--- src/ControlStruct/Mutate.h	(revision 3d26610b1bab2688ae61b5b0e34f63763ec3a35b)
+++ src/ControlStruct/Mutate.h	(revision b368dd84ea84d33a0de73c6f989ade0c55c94e44)
@@ -5,5 +5,5 @@
 // file "LICENCE" distributed with Cforall.
 //
-// Mutate.h -- 
+// Mutate.h --
 //
 // Author           : Rodolfo G. Esteves
@@ -20,7 +20,11 @@
 class Declaration;
 
+/// Desugars Cforall control structures
 namespace ControlStruct {
-	/// Desugars Cforall control structures
-	void mutate( std::list< Declaration* > translationUnit );
+	/// normalizes label definitions and generates multi-level exit labels
+	void fixLabels( std::list< Declaration * > & translationUnit );
+
+	/// hoist initialization out of for statements
+	void hoistControlDecls( std::list< Declaration * > & translationUnit );
 } // namespace ControlStruct
 
Index: src/ResolvExpr/AlternativeFinder.cc
===================================================================
--- src/ResolvExpr/AlternativeFinder.cc	(revision 3d26610b1bab2688ae61b5b0e34f63763ec3a35b)
+++ src/ResolvExpr/AlternativeFinder.cc	(revision b368dd84ea84d33a0de73c6f989ade0c55c94e44)
@@ -299,6 +299,6 @@
 		// it's okay for the aggregate expression to have reference type -- cast it to the base type to treat the aggregate as the referenced value
 		std::unique_ptr<Expression> aggrExpr( alt.expr->clone() );
-		alt.env.apply( aggrExpr->get_result() );
-		Type * aggrType = aggrExpr->get_result();
+		alt.env.apply( aggrExpr->result );
+		Type * aggrType = aggrExpr->result;
 		if ( dynamic_cast< ReferenceType * >( aggrType ) ) {
 			aggrType = aggrType->stripReferences();
@@ -306,8 +306,8 @@
 		}
 
-		if ( StructInstType *structInst = dynamic_cast< StructInstType* >( aggrExpr->get_result() ) ) {
+		if ( StructInstType *structInst = dynamic_cast< StructInstType* >( aggrExpr->result ) ) {
 			NameExpr nameExpr( "" );
 			addAggMembers( structInst, aggrExpr.get(), alt.cost+Cost::safe, alt.env, &nameExpr );
-		} else if ( UnionInstType *unionInst = dynamic_cast< UnionInstType* >( aggrExpr->get_result() ) ) {
+		} else if ( UnionInstType *unionInst = dynamic_cast< UnionInstType* >( aggrExpr->result ) ) {
 			NameExpr nameExpr( "" );
 			addAggMembers( unionInst, aggrExpr.get(), alt.cost+Cost::safe, alt.env, &nameExpr );
@@ -320,5 +320,5 @@
 		NameExpr * nameExpr = dynamic_cast< NameExpr * >( member );
 		if ( ! nameExpr ) return;
-		const std::string & name = nameExpr->get_name();
+		const std::string & name = nameExpr->name;
 		std::list< Declaration* > members;
 		aggInst->lookup( name, members );
Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision 3d26610b1bab2688ae61b5b0e34f63763ec3a35b)
+++ src/SymTab/Validate.cc	(revision b368dd84ea84d33a0de73c6f989ade0c55c94e44)
@@ -48,4 +48,5 @@
 #include "CodeGen/CodeGenerator.h"     // for genName
 #include "CodeGen/OperatorTable.h"     // for isCtorDtor, isCtorDtorAssign
+#include "ControlStruct/Mutate.h"      // for ForExprMutator
 #include "Common/PassVisitor.h"        // for PassVisitor, WithDeclsToAdd
 #include "Common/ScopedMap.h"          // for ScopedMap
@@ -76,5 +77,4 @@
 class SwitchStmt;
 
-
 #define debugPrint( x ) if ( doDebug ) { std::cout << x; }
 
@@ -275,4 +275,5 @@
 		Concurrency::applyKeywords( translationUnit );
 		acceptAll( translationUnit, fpd ); // must happen before autogenerateRoutines, after Concurrency::applyKeywords because uniqueIds must be set on declaration before resolution
+		ControlStruct::hoistControlDecls( translationUnit );  // hoist initialization out of for statements; must happen before autogenerateRoutines
 		autogenerateRoutines( translationUnit ); // moved up, used to be below compoundLiteral - currently needs EnumAndPointerDecay
 		Concurrency::implementMutexFuncs( translationUnit );
Index: src/main.cc
===================================================================
--- src/main.cc	(revision 3d26610b1bab2688ae61b5b0e34f63763ec3a35b)
+++ src/main.cc	(revision b368dd84ea84d33a0de73c6f989ade0c55c94e44)
@@ -264,5 +264,5 @@
 		} // if
 
-		PASS( "mutate", ControlStruct::mutate( translationUnit ) );
+		PASS( "fixLabels", ControlStruct::fixLabels( translationUnit ) );
 		PASS( "fixNames", CodeGen::fixNames( translationUnit ) );
 		PASS( "genInit", InitTweak::genInit( translationUnit ) );
