Index: src/ControlStruct/MLEMutator.cc
===================================================================
--- src/ControlStruct/MLEMutator.cc	(revision 2871210d7be1910f7296a17164d525f66ef82648)
+++ src/ControlStruct/MLEMutator.cc	(revision f6d7e0fd6426ec53714b58bf6c5013fb9f1330b6)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Thu Jun 04 15:12:33 2015
-// Update Count     : 173
+// Last Modified On : Sat Jun 27 10:56:14 2015
+// Update Count     : 174
 //
 
@@ -143,5 +143,5 @@
 			if ( enclosingLoops.empty() ) {
 				throw SemanticError( "'continue' outside a loop" );
-			} else if ( std::find( enclosingLoops.begin(), enclosingLoops.end(), (*targetTable)[branchStmt->get_target()] ) == enclosingLoops.end() ) {
+			} else if ( branchStmt->get_target() != "" && std::find( enclosingLoops.begin(), enclosingLoops.end(), (*targetTable)[branchStmt->get_target()] ) == enclosingLoops.end() ) {
 				throw SemanticError( "'continue' target label must be an enclosing loop: " + originalTarget );
 			}
Index: src/GenPoly/Box.cc
===================================================================
--- src/GenPoly/Box.cc	(revision 2871210d7be1910f7296a17164d525f66ef82648)
+++ src/GenPoly/Box.cc	(revision f6d7e0fd6426ec53714b58bf6c5013fb9f1330b6)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jun 13 09:12:19 2015
-// Update Count     : 4
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Jun 24 16:19:07 2015
+// Update Count     : 10
 //
 
@@ -366,5 +366,5 @@
 				} else {
 					ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, arg->get_results().front()->clone(), 0 );
-					newObj->get_type()->get_qualifiers() = Type::Qualifiers();
+					newObj->get_type()->get_qualifiers() = Type::Qualifiers(); // TODO: is this right???
 					stmtsToAdd.push_back( new DeclStmt( noLabels, newObj ) );
 					UntypedExpr *assign = new UntypedExpr( new NameExpr( "?=?" ) );
Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision 2871210d7be1910f7296a17164d525f66ef82648)
+++ src/SymTab/Validate.cc	(revision f6d7e0fd6426ec53714b58bf6c5013fb9f1330b6)
@@ -10,6 +10,6 @@
 // Created On       : Sun May 17 21:50:04 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Wed Jun 24 16:20:50 2015
-// Update Count     : 30
+// Last Modified On : Fri Jul 03 13:17:07 2015
+// Update Count     : 131
 //
 
@@ -52,4 +52,5 @@
 #include "UniqueName.h"
 #include "AddVisit.h"
+#include "MakeLibCfa.h"
 
 
@@ -291,7 +292,9 @@
   
 		for ( std::list< Declaration * >::iterator i = enumDecl->get_members().begin(); i != enumDecl->get_members().end(); ++i ) {
-			ObjectDecl *obj = dynamic_cast< ObjectDecl * >( *i );
+			ObjectDecl * obj = dynamic_cast< ObjectDecl * >( *i );
 			assert( obj );
-			obj->set_type( new EnumInstType( Type::Qualifiers( true, false, false, false, false, false ), enumDecl->get_name() ) );
+			// obj->set_type( new EnumInstType( Type::Qualifiers( true, false, false, false, false, false ), enumDecl->get_name() ) );
+			BasicType * enumType = new BasicType( Type::Qualifiers(), BasicType::SignedInt );
+			obj->set_type( enumType ) ;
 		} // for
 		Parent::visit( enumDecl );
@@ -543,4 +546,53 @@
 	}
 
+	//E ?=?(E volatile*, int), 
+	//  ?=?(E _Atomic volatile*, int);
+	void makeEnumAssignment( EnumDecl *enumDecl, EnumInstType *refType, unsigned int functionNesting, std::list< Declaration * > &declsToAdd ) {
+		FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
+  
+		ObjectDecl *returnVal = new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, refType->clone(), 0 );
+		assignType->get_returnVals().push_back( returnVal );
+
+		// need two assignment operators with different types
+		FunctionType * assignType2 = assignType->clone();
+
+		// E ?=?(E volatile *, E)
+		Type *etype = refType->clone();
+		etype->get_qualifiers() += Type::Qualifiers(false, true, false, false, false, false);
+
+		ObjectDecl *dstParam = new ObjectDecl( "_dst", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), etype ), 0 );
+		assignType->get_parameters().push_back( dstParam );
+
+		ObjectDecl *srcParam = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, etype->clone(), 0 );
+		assignType->get_parameters().push_back( srcParam );
+
+		// E ?=?(E volatile *, int)
+		assignType2->get_parameters().push_back( dstParam->clone() );
+		BasicType * paramType = new BasicType(Type::Qualifiers(), BasicType::SignedInt); 
+		ObjectDecl *srcParam2 = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, paramType, 0 );
+		assignType2->get_parameters().push_back( srcParam2 );
+
+		// Routines at global scope marked "static" to prevent multiple definitions is separate translation units
+		// because each unit generates copies of the default routines for each aggregate.
+
+		// since there is no definition, these should not be inline
+		// make these intrinsic so that the code generator does not make use of them
+		FunctionDecl *assignDecl = new FunctionDecl( "?=?", functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::Intrinsic, assignType, 0, false, false );
+		assignDecl->fixUniqueId();
+		FunctionDecl *assignDecl2 = new FunctionDecl( "?=?", functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::Intrinsic, assignType2, 0, false, false );
+		assignDecl2->fixUniqueId();
+
+		std::list< Declaration * > assigns;
+		assigns.push_back( assignDecl );
+		assigns.push_back( assignDecl2 );
+
+		LibCfa::makeLibCfa( assigns );
+
+		declsToAdd.insert( declsToAdd.begin(), assigns.begin(), assigns.end() );
+
+		// return assignDecl;
+	}
+
+
 	Declaration *makeStructAssignment( StructDecl *aggregateDecl, StructInstType *refType, unsigned int functionNesting ) {
 		FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
@@ -612,4 +664,13 @@
   
 		return assignDecl;
+	}
+
+	void AddStructAssignment::visit( EnumDecl *enumDecl ) {
+		if ( ! enumDecl->get_members().empty() ) {
+			EnumInstType *enumInst = new EnumInstType( Type::Qualifiers(), enumDecl->get_name() );
+			// enumInst->set_baseEnum( enumDecl );
+			// declsToAdd.push_back( 
+			makeEnumAssignment( enumDecl, enumInst, functionNesting, declsToAdd );
+		}
 	}
 
Index: src/main.cc
===================================================================
--- src/main.cc	(revision 2871210d7be1910f7296a17164d525f66ef82648)
+++ src/main.cc	(revision f6d7e0fd6426ec53714b58bf6c5013fb9f1330b6)
@@ -9,7 +9,13 @@
 // Author           : Richard C. Bilson
 // Created On       : Fri May 15 23:12:02 2015
+<<<<<<< Updated upstream
 // Last Modified By : Peter A. Buhr
 // Last Modified On : Mon Jun 29 17:09:21 2015
 // Update Count     : 77
+=======
+// Last Modified By : Rob Schluntz
+// Last Modified On : Fri Jul 03 13:08:52 2015
+// Update Count     : 75
+>>>>>>> Stashed changes
 //
 
@@ -283,5 +289,5 @@
 		} // if
 
-		CodeGen::generate( translationUnit, *output, protop );
+		CodeGen::generate( translationUnit, *output, true ); //protop );
 
 		if ( output != &std::cout ) {
