Index: src/GenPoly/Box.cc
===================================================================
--- src/GenPoly/Box.cc	(revision 03286aaea98bf5731f95b7fdb6a443bceaddd2f0)
+++ src/GenPoly/Box.cc	(revision a8616147156b4751568c1946ca87d277fb2c3b77)
@@ -10,5 +10,5 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Tue May 03 16:44:47 2016
+// Last Modified On : Fri May 13 14:51:21 2016
 // Update Count     : 295
 //
@@ -1037,9 +1037,11 @@
 			std::list< DeclarationWithType *>::iterator param = adapterType->get_parameters().begin();
 			std::list< DeclarationWithType *>::iterator realParam = adaptee->get_parameters().begin();
-			param++;		// skip adaptee parameter
+			param++;		// skip adaptee parameter in the adapter type
 			if ( realType->get_returnVals().empty() ) {
+				// void return
 				addAdapterParams( adapteeApp, arg, param, adapterType->get_parameters().end(), realParam, tyVars );
 				bodyStmt = new ExprStmt( noLabels, adapteeApp );
 			} else if ( isPolyType( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
+				// return type T
 				if ( (*param)->get_name() == "" ) {
 					(*param)->set_name( "_ret" );
@@ -2069,6 +2071,6 @@
 				if ( n_members == 0 ) {
 					// all empty structs have the same layout - size 1, align 1
-					makeVar( sizeofName( typeName ), layoutType, new SingleInit( new ConstantExpr( Constant::from_ulong( 1 ) ) ) );
-					makeVar( alignofName( typeName ), layoutType->clone(), new SingleInit( new ConstantExpr( Constant::from_ulong( 1 ) ) ) );
+					makeVar( sizeofName( typeName ), layoutType, new SingleInit( new ConstantExpr( Constant::from_ulong( (unsigned long)1 ) ) ) );
+					makeVar( alignofName( typeName ), layoutType->clone(), new SingleInit( new ConstantExpr( Constant::from_ulong( (unsigned long)1 ) ) ) );
 					// NOTE zero-length arrays are forbidden in C, so empty structs have no offsetof array
 				} else {
Index: src/InitTweak/FixGlobalInit.cc
===================================================================
--- src/InitTweak/FixGlobalInit.cc	(revision 03286aaea98bf5731f95b7fdb6a443bceaddd2f0)
+++ src/InitTweak/FixGlobalInit.cc	(revision a8616147156b4751568c1946ca87d277fb2c3b77)
@@ -10,10 +10,10 @@
 // Created On       : Mon May 04 15:14:56 2016
 // Last Modified By : Rob Schluntz
-// Last Modified On : Mon May 09 11:44:29 2016
+// Last Modified On : Fri May 13 11:37:30 2016
 // Update Count     : 2
 //
 
 #include "FixGlobalInit.h"
-#include "GenInit.h"
+#include "InitTweak.h"
 #include "SynTree/Declaration.h"
 #include "SynTree/Type.h"
@@ -125,7 +125,8 @@
 		std::list< Statement * > & destroyStatements = destroyFunction->get_statements()->get_kids();
 
-		if ( objDecl->get_init() == NULL ) return;
+		// if ( objDecl->get_init() == NULL ) return;
 		if ( ! tryConstruct( objDecl ) ) return; // don't construct @= or designated objects
 		if ( objDecl->get_type()->get_isConst() ) return; // temporary: can't assign to a const variable
+		if ( objDecl->get_storageClass() == DeclarationNode::Extern ) return;
 		// C allows you to initialize objects with constant expressions
 		// xxx - this is an optimization. Need to first resolve constructors before we decide
@@ -133,19 +134,23 @@
 		// if ( isConstExpr( objDecl->get_init() ) ) return;
 
-		// steal initializer from object and attach it to a new temporary
-		ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, objDecl->get_type()->clone(), objDecl->get_init() );
-		objDecl->set_init( NULL );
-		initStatements.push_back( new DeclStmt( noLabels, newObj ) );
+		if ( ArrayType * at = dynamic_cast< ArrayType * > ( objDecl->get_type() ) ) {
+			// xxx - initialize each element of the array
+		} else {
+			// steal initializer from object and attach it to a new temporary
+			ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, objDecl->get_type()->clone(), objDecl->get_init() );
+			objDecl->set_init( NULL );
+			initStatements.push_back( new DeclStmt( noLabels, newObj ) );
 
-		// copy construct objDecl using temporary
-		UntypedExpr * init = new UntypedExpr( new NameExpr( "?{}" ) );
-		init->get_args().push_back( new AddressExpr( new VariableExpr( objDecl ) ) );
-		init->get_args().push_back( new VariableExpr( newObj ) );
-		initStatements.push_back( new ExprStmt( noLabels, init ) );
+			// copy construct objDecl using temporary
+			UntypedExpr * init = new UntypedExpr( new NameExpr( "?{}" ) );
+			init->get_args().push_back( new AddressExpr( new VariableExpr( objDecl ) ) );
+			init->get_args().push_back( new VariableExpr( newObj ) );
+			initStatements.push_back( new ExprStmt( noLabels, init ) );
 
-		// add destructor calls to global destroy function
-		UntypedExpr * destroy = new UntypedExpr( new NameExpr( "^?{}" ) );
-		destroy->get_args().push_back( new AddressExpr( new VariableExpr( objDecl ) ) );
-		destroyStatements.push_front( new ExprStmt( noLabels, destroy ) );
+			// add destructor calls to global destroy function
+			UntypedExpr * destroy = new UntypedExpr( new NameExpr( "^?{}" ) );
+			destroy->get_args().push_back( new AddressExpr( new VariableExpr( objDecl ) ) );
+			destroyStatements.push_front( new ExprStmt( noLabels, destroy ) );
+		}
 	}
 
Index: src/InitTweak/FixInit.cc
===================================================================
--- src/InitTweak/FixInit.cc	(revision 03286aaea98bf5731f95b7fdb6a443bceaddd2f0)
+++ src/InitTweak/FixInit.cc	(revision a8616147156b4751568c1946ca87d277fb2c3b77)
@@ -10,5 +10,5 @@
 // Created On       : Wed Jan 13 16:29:30 2016
 // Last Modified By : Rob Schluntz
-// Last Modified On : Mon May 09 12:36:02 2016
+// Last Modified On : Fri May 13 11:44:26 2016
 // Update Count     : 30
 //
@@ -17,4 +17,5 @@
 #include <list>
 #include "FixInit.h"
+#include "InitTweak.h"
 #include "ResolvExpr/Resolver.h"
 #include "ResolvExpr/typeops.h"
@@ -27,5 +28,4 @@
 #include "SymTab/Indexer.h"
 #include "GenPoly/PolyMutator.h"
-#include "GenPoly/GenPoly.h"
 
 bool ctordtorp = false;
@@ -398,28 +398,4 @@
 	}
 
-	bool isInstrinsicSingleArgCallStmt( Statement * stmt ) {
-		if ( stmt == NULL ) return false;
-		if ( ExprStmt * exprStmt = dynamic_cast< ExprStmt * >( stmt ) ) {
-			ApplicationExpr * appExpr = dynamic_cast< ApplicationExpr * >( exprStmt->get_expr() );
-			assert( appExpr );
-			VariableExpr * function = dynamic_cast< VariableExpr * >( appExpr->get_function() );
-			assert( function );
-			// check for Intrinsic only - don't want to remove all overridable ctor/dtors because autogenerated ctor/dtor
-			// will call all member dtors, and some members may have a user defined dtor.
-			FunctionType * funcType = GenPoly::getFunctionType( function->get_var()->get_type() );
-			assert( funcType );
-			return function->get_var()->get_linkage() == LinkageSpec::Intrinsic && funcType->get_parameters().size() == 1;
-		} else if ( CompoundStmt * compoundStmt = dynamic_cast< CompoundStmt * >( stmt ) ) {
-			// could also be a compound statement with a loop, in the case of an array
-			assert( compoundStmt->get_kids().size() == 2 ); // loop variable and loop
-			ForStmt * forStmt = dynamic_cast< ForStmt * >( compoundStmt->get_kids().back() );
-			assert( forStmt && forStmt->get_body() );
-			return isInstrinsicSingleArgCallStmt( forStmt->get_body() );
-		} else {
-			// should never get here
-			assert( false && "encountered unknown call statement" );
-		}
-	}
-
 	namespace {
 		template<typename Iterator, typename OutputIterator>
@@ -428,5 +404,6 @@
 				// remove if instrinsic destructor statement. Note that this is only called
 				// on lists of implicit dtors, so if the user manually calls an intrinsic
-				// dtor then the call will still be generated
+				// dtor then the call must (and will) still be generated since the argument
+				// may contain side effects.
 				if ( ! isInstrinsicSingleArgCallStmt( *it ) ) {
 					// don't need to call intrinsic dtor, because it does nothing, but
Index: src/InitTweak/FixInit.h
===================================================================
--- src/InitTweak/FixInit.h	(revision 03286aaea98bf5731f95b7fdb6a443bceaddd2f0)
+++ src/InitTweak/FixInit.h	(revision a8616147156b4751568c1946ca87d277fb2c3b77)
@@ -10,5 +10,5 @@
 // Created On       : Wed Jan 13 16:29:30 2016
 // Last Modified By : Rob Schluntz
-// Last Modified On : Mon May 09 12:08:11 2016
+// Last Modified On : Fri May 13 11:27:52 2016
 // Update Count     : 5
 //
@@ -28,9 +28,4 @@
   /// and unwrap basic C-style initializers
 	void fix( std::list< Declaration * > & translationUnit );
-
-  /// True if stmt is a call statement where the function called is intrinsic and takes one parameter.
-  /// Intended to be used for default ctor/dtor calls, but might have use elsewhere.
-  /// Currently has assertions that make it less than fully general.
-  bool isInstrinsicSingleArgCallStmt( Statement * expr );
 } // namespace
 
Index: src/InitTweak/GenInit.cc
===================================================================
--- src/InitTweak/GenInit.cc	(revision 03286aaea98bf5731f95b7fdb6a443bceaddd2f0)
+++ src/InitTweak/GenInit.cc	(revision a8616147156b4751568c1946ca87d277fb2c3b77)
@@ -10,5 +10,5 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Fri May 06 16:11:15 2016
+// Last Modified On : Fri May 13 11:37:48 2016
 // Update Count     : 166
 //
@@ -17,4 +17,5 @@
 #include <list>
 #include "GenInit.h"
+#include "InitTweak.h"
 #include "SynTree/Declaration.h"
 #include "SynTree/Type.h"
@@ -129,12 +130,5 @@
 	}
 
-	bool tryConstruct( ObjectDecl * objDecl ) {
-		// xxx - handle designations
-		return ! LinkageSpec::isBuiltin( objDecl->get_linkage() ) &&
- 			(objDecl->get_init() == NULL ||
-			( objDecl->get_init() != NULL && objDecl->get_init()->get_maybeConstructed() ));
-	}
 	namespace {
-
 		Expression * makeCtorDtorExpr( std::string name, ObjectDecl * objDecl, std::list< Expression * > args ) {
 			UntypedExpr * expr = new UntypedExpr( new NameExpr( name ) );
@@ -142,31 +136,4 @@
 			expr->get_args().splice( expr->get_args().end(), args );
 			return expr;
-		}
-
-		class InitExpander : public Visitor {
-		  public:
-		  InitExpander() {}
-		  // ~InitExpander() {}
-			virtual void visit( SingleInit * singleInit );
-			virtual void visit( ListInit * listInit );
-			std::list< Expression * > argList;
-		};
-
-		void InitExpander::visit( SingleInit * singleInit ) {
-			argList.push_back( singleInit->get_value()->clone() );
-		}
-
-		void InitExpander::visit( ListInit * listInit ) {
-			// xxx - for now, assume no nested list inits
-			std::list<Initializer*>::iterator it = listInit->begin_initializers();
-			for ( ; it != listInit->end_initializers(); ++it ) {
-				(*it)->accept( *this );
-			}
-		}
-
-		std::list< Expression * > makeInitList( Initializer * init ) {
-			InitExpander expander;
-			maybeAccept( init, expander );
-			return expander.argList;
 		}
 	}
@@ -179,22 +146,33 @@
 					// call into makeArrayFunction from validate.cc to generate calls to ctor/dtor for each element of array
 					// TODO: walk initializer and generate appropriate copy ctor if element has initializer
-					std::list< Statement * > ctor;
-					std::list< Statement * > dtor;
-
-					SymTab::makeArrayFunction( NULL, new VariableExpr( objDecl ), at, "?{}", back_inserter( ctor ) );
-					SymTab::makeArrayFunction( NULL, new VariableExpr( objDecl ), at, "^?{}", front_inserter( dtor ), false );
-
-					// Currently makeArrayFunction produces a single Statement - a CompoundStmt
-					// which  wraps everything that needs to happen. As such, it's technically
-					// possible to use a Statement ** in the above calls, but this is inherently
-					// unsafe, so instead we take the slightly less efficient route, but will be
-					// immediately informed if somehow the above assumption is broken. In this case,
-					// we could always wrap the list of statements at this point with a CompoundStmt,
-					// but it seems reasonable at the moment for this to be done by makeArrayFunction
-					// itself
-					assert( ctor.size() == 1 );
-					assert( dtor.size() == 1 );
-
-					objDecl->set_init( new ConstructorInit( ctor.front(), dtor.front(), objDecl->get_init() ) );
+					std::list< Expression * > args = makeInitList( objDecl->get_init() );
+					if ( args.empty() ) {
+						std::list< Statement * > ctor;
+						std::list< Statement * > dtor;
+
+						SymTab::makeArrayFunction( NULL, new VariableExpr( objDecl ), at, "?{}", back_inserter( ctor ) );
+						SymTab::makeArrayFunction( NULL, new VariableExpr( objDecl ), at, "^?{}", front_inserter( dtor ), false );
+
+						// Currently makeArrayFunction produces a single Statement - a CompoundStmt
+						// which  wraps everything that needs to happen. As such, it's technically
+						// possible to use a Statement ** in the above calls, but this is inherently
+						// unsafe, so instead we take the slightly less efficient route, but will be
+						// immediately informed if somehow the above assumption is broken. In this case,
+						// we could always wrap the list of statements at this point with a CompoundStmt,
+						// but it seems reasonable at the moment for this to be done by makeArrayFunction
+						// itself
+						assert( ctor.size() == 1 );
+						assert( dtor.size() == 1 );
+
+						objDecl->set_init( new ConstructorInit( ctor.front(), dtor.front(), objDecl->get_init() ) );
+					} else {
+						// array came with an initializer list: initialize each element
+						// may have more initializers than elements in the array - need to check at each index that
+						// we haven't exceeded size. This requires precomputing the size because it might be a side-effecting
+						// computation.
+						// may have fewer initializers than eleemnts in the array - need to default construct
+						// remaining elements.
+						// might be able to merge this with the case above.
+					}
 				} else {
 					// it's sufficient to attempt to call the ctor/dtor for the given object and its initializer
Index: src/InitTweak/GenInit.h
===================================================================
--- src/InitTweak/GenInit.h	(revision 03286aaea98bf5731f95b7fdb6a443bceaddd2f0)
+++ src/InitTweak/GenInit.h	(revision a8616147156b4751568c1946ca87d277fb2c3b77)
@@ -10,5 +10,5 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Fri May 06 16:18:22 2016
+// Last Modified On : Fri May 13 11:27:19 2016
 // Update Count     : 3
 //
@@ -27,6 +27,4 @@
 	/// Adds return value temporaries and wraps Initializers in ConstructorInit nodes
 	void genInit( std::list< Declaration * > & translationUnit );
-	/// True if the resolver should try to construct objDecl
-	bool tryConstruct( ObjectDecl * objDecl );
 } // namespace
 
Index: src/InitTweak/module.mk
===================================================================
--- src/InitTweak/module.mk	(revision 03286aaea98bf5731f95b7fdb6a443bceaddd2f0)
+++ src/InitTweak/module.mk	(revision a8616147156b4751568c1946ca87d277fb2c3b77)
@@ -11,5 +11,5 @@
 ## Created On       : Mon Jun  1 17:49:17 2015
 ## Last Modified By : Rob Schluntz
-## Last Modified On : Fri May 06 15:59:27 2016
+## Last Modified On : Fri May 13 11:36:24 2016
 ## Update Count     : 3
 ###############################################################################
@@ -17,4 +17,5 @@
 SRC += InitTweak/GenInit.cc \
 	InitTweak/FixInit.cc \
-	InitTweak/FixGlobalInit.cc
+	InitTweak/FixGlobalInit.cc \
+	InitTweak/InitTweak.cc
 
Index: src/Makefile.in
===================================================================
--- src/Makefile.in	(revision 03286aaea98bf5731f95b7fdb6a443bceaddd2f0)
+++ src/Makefile.in	(revision a8616147156b4751568c1946ca87d277fb2c3b77)
@@ -126,4 +126,5 @@
 	InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT) \
 	InitTweak/driver_cfa_cpp-FixGlobalInit.$(OBJEXT) \
+	InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT) \
 	Parser/driver_cfa_cpp-parser.$(OBJEXT) \
 	Parser/driver_cfa_cpp-lex.$(OBJEXT) \
@@ -350,9 +351,10 @@
 	GenPoly/DeclMutator.cc InitTweak/GenInit.cc \
 	InitTweak/FixInit.cc InitTweak/FixGlobalInit.cc \
-	Parser/parser.yy Parser/lex.ll Parser/TypedefTable.cc \
-	Parser/ParseNode.cc Parser/DeclarationNode.cc \
-	Parser/ExpressionNode.cc Parser/StatementNode.cc \
-	Parser/InitializerNode.cc Parser/TypeData.cc \
-	Parser/LinkageSpec.cc Parser/parseutility.cc Parser/Parser.cc \
+	InitTweak/InitTweak.cc Parser/parser.yy Parser/lex.ll \
+	Parser/TypedefTable.cc Parser/ParseNode.cc \
+	Parser/DeclarationNode.cc Parser/ExpressionNode.cc \
+	Parser/StatementNode.cc Parser/InitializerNode.cc \
+	Parser/TypeData.cc Parser/LinkageSpec.cc \
+	Parser/parseutility.cc Parser/Parser.cc \
 	ResolvExpr/AlternativeFinder.cc ResolvExpr/Alternative.cc \
 	ResolvExpr/Unify.cc ResolvExpr/PtrsAssignable.cc \
@@ -571,4 +573,6 @@
 	InitTweak/$(DEPDIR)/$(am__dirstamp)
 InitTweak/driver_cfa_cpp-FixGlobalInit.$(OBJEXT):  \
+	InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp)
+InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT):  \
 	InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp)
 Parser/parser.h: Parser/parser.cc
@@ -806,4 +810,5 @@
 	-rm -f InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT)
 	-rm -f InitTweak/driver_cfa_cpp-GenInit.$(OBJEXT)
+	-rm -f InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT)
 	-rm -f Parser/driver_cfa_cpp-DeclarationNode.$(OBJEXT)
 	-rm -f Parser/driver_cfa_cpp-ExpressionNode.$(OBJEXT)
@@ -914,4 +919,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Po@am__quote@
@@ -1425,4 +1431,18 @@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-FixGlobalInit.obj `if test -f 'InitTweak/FixGlobalInit.cc'; then $(CYGPATH_W) 'InitTweak/FixGlobalInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/FixGlobalInit.cc'; fi`
 
+InitTweak/driver_cfa_cpp-InitTweak.o: InitTweak/InitTweak.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-InitTweak.o -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Tpo -c -o InitTweak/driver_cfa_cpp-InitTweak.o `test -f 'InitTweak/InitTweak.cc' || echo '$(srcdir)/'`InitTweak/InitTweak.cc
+@am__fastdepCXX_TRUE@	$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='InitTweak/InitTweak.cc' object='InitTweak/driver_cfa_cpp-InitTweak.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-InitTweak.o `test -f 'InitTweak/InitTweak.cc' || echo '$(srcdir)/'`InitTweak/InitTweak.cc
+
+InitTweak/driver_cfa_cpp-InitTweak.obj: InitTweak/InitTweak.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-InitTweak.obj -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Tpo -c -o InitTweak/driver_cfa_cpp-InitTweak.obj `if test -f 'InitTweak/InitTweak.cc'; then $(CYGPATH_W) 'InitTweak/InitTweak.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/InitTweak.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='InitTweak/InitTweak.cc' object='InitTweak/driver_cfa_cpp-InitTweak.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-InitTweak.obj `if test -f 'InitTweak/InitTweak.cc'; then $(CYGPATH_W) 'InitTweak/InitTweak.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/InitTweak.cc'; fi`
+
 Parser/driver_cfa_cpp-parser.o: Parser/parser.cc
 @am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-parser.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-parser.Tpo -c -o Parser/driver_cfa_cpp-parser.o `test -f 'Parser/parser.cc' || echo '$(srcdir)/'`Parser/parser.cc
Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision 03286aaea98bf5731f95b7fdb6a443bceaddd2f0)
+++ src/ResolvExpr/Resolver.cc	(revision a8616147156b4751568c1946ca87d277fb2c3b77)
@@ -10,5 +10,5 @@
 // Created On       : Sun May 17 12:17:01 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Mon May 09 12:10:19 2016
+// Last Modified On : Fri May 13 11:36:40 2016
 // Update Count     : 203
 //
@@ -25,5 +25,5 @@
 #include "SymTab/Indexer.h"
 #include "Common/utility.h"
-#include "InitTweak/FixInit.h"
+#include "InitTweak/InitTweak.h"
 
 #include <iostream>
Index: src/SynTree/ArrayType.cc
===================================================================
--- src/SynTree/ArrayType.cc	(revision 03286aaea98bf5731f95b7fdb6a443bceaddd2f0)
+++ src/SynTree/ArrayType.cc	(revision a8616147156b4751568c1946ca87d277fb2c3b77)
@@ -5,10 +5,10 @@
 // file "LICENCE" distributed with Cforall.
 //
-// ArrayType.cc -- 
+// ArrayType.cc --
 //
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Wed Aug 12 14:19:07 2015
+// Last Modified On : Thu May 12 14:07:16 2016
 // Update Count     : 11
 //
@@ -51,5 +51,5 @@
 	if ( dimension ) {
 		os << " with dimension of ";
-		dimension->print( os, 0 );
+		dimension->print( os, indent );
 	} // if
 }
Index: src/SynTree/Expression.cc
===================================================================
--- src/SynTree/Expression.cc	(revision 03286aaea98bf5731f95b7fdb6a443bceaddd2f0)
+++ src/SynTree/Expression.cc	(revision a8616147156b4751568c1946ca87d277fb2c3b77)
@@ -10,5 +10,5 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Wed May 04 12:17:51 2016
+// Last Modified On : Fri May 13 13:23:11 2016
 // Update Count     : 40
 //
@@ -75,5 +75,4 @@
 	constant.print( os );
 	Expression::print( os, indent );
-	os << std::endl;
 }
 
@@ -325,4 +324,5 @@
 	os << ", from aggregate: ";
 	if (agg != 0) {
+		os << std::string( indent + 2, ' ' );
 		agg->print(os, indent + 2);
 	}
@@ -360,4 +360,5 @@
 	os << std::string( indent, ' ' ) << "from aggregate: " << std::endl;
 	if (agg != 0) {
+		os << std::string( indent + 2, ' ' );
 		agg->print(os, indent + 2);
 	}
@@ -381,8 +382,8 @@
 void UntypedExpr::print( std::ostream &os, int indent ) const {
 	os << "Applying untyped: " << std::endl;
-	os << std::string( indent+4, ' ' );
-	function->print(os, indent + 4);
+	os << std::string( indent+2, ' ' );
+	function->print(os, indent + 2);
 	os << std::string( indent, ' ' ) << "...to: " << std::endl;
-	printAll(args, os, indent + 4);
+	printAll(args, os, indent + 2);
 	Expression::print( os, indent );
 }
Index: src/SynTree/Initializer.cc
===================================================================
--- src/SynTree/Initializer.cc	(revision 03286aaea98bf5731f95b7fdb6a443bceaddd2f0)
+++ src/SynTree/Initializer.cc	(revision a8616147156b4751568c1946ca87d277fb2c3b77)
@@ -10,5 +10,5 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Tue Apr 26 15:51:35 2016
+// Last Modified On : Fri May 13 13:23:03 2016
 // Update Count     : 28
 //
@@ -49,6 +49,7 @@
 
 	if ( ! designators.empty() ) {
-		os << std::endl << std::string(indent + 2, ' ' ) << "designated by: "   << std::endl;
+		os << std::endl << std::string(indent + 2, ' ' ) << "designated by: " << std::endl;
 		for ( std::list < Expression * >::iterator i = designators.begin(); i != designators.end(); i++ ) {
+			os << std::string(indent + 4, ' ' );
 			( *i )->print(os, indent + 4 );
 		}
Index: src/SynTree/ObjectDecl.cc
===================================================================
--- src/SynTree/ObjectDecl.cc	(revision 03286aaea98bf5731f95b7fdb6a443bceaddd2f0)
+++ src/SynTree/ObjectDecl.cc	(revision a8616147156b4751568c1946ca87d277fb2c3b77)
@@ -10,5 +10,5 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Wed May 04 12:18:28 2016
+// Last Modified On : Fri May 13 13:23:32 2016
 // Update Count     : 30
 //
@@ -57,8 +57,8 @@
 
 	if ( init ) {
-		os << std::string(indent, ' ');
 		os << " with initializer ";
 		init->print( os, indent );
-		os << std::string(indent, ' ') << "maybeConstructed? " << init->get_maybeConstructed();
+		os << std::endl << std::string(indent, ' ');
+		os << "maybeConstructed? " << init->get_maybeConstructed();
 	} // if
 
Index: src/SynTree/Statement.cc
===================================================================
--- src/SynTree/Statement.cc	(revision 03286aaea98bf5731f95b7fdb6a443bceaddd2f0)
+++ src/SynTree/Statement.cc	(revision a8616147156b4751568c1946ca87d277fb2c3b77)
@@ -10,5 +10,5 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Thu Apr 28 13:34:32 2016
+// Last Modified On : Thu May 12 13:33:18 2016
 // Update Count     : 54
 //
@@ -43,5 +43,5 @@
 
 void ExprStmt::print( std::ostream &os, int indent ) const {
-	os << "Expression Statement:" << endl << std::string( indent, ' ' );
+	os << "Expression Statement:" << endl << std::string( indent + 2, ' ' );
 	expr->print( os, indent + 2 );
 }
@@ -290,18 +290,25 @@
 	os << string( indent + 2, ' ' ) << "initialization: \n";
 	for ( std::list<Statement *>::const_iterator it = initialization.begin(); it != initialization.end(); ++it ) {
+		os << string( indent + 4, ' ' );
 		(*it)->print( os, indent + 4 );
 	}
 
 	os << "\n" << string( indent + 2, ' ' ) << "condition: \n";
-	if ( condition != 0 )
+	if ( condition != 0 ) {
+		os << string( indent + 4, ' ' );
 		condition->print( os, indent + 4 );
+	}
 
 	os << "\n" << string( indent + 2, ' ' ) << "increment: \n";
-	if ( increment != 0 )
+	if ( increment != 0 ) {
+		os << string( indent + 4, ' ' );
 		increment->print( os, indent + 4 );
+	}
 
 	os << "\n" << string( indent + 2, ' ' ) << "statement block: \n";
-	if ( body != 0 )
+	if ( body != 0 ) {
+		os << string( indent + 4, ' ' );
 		body->print( os, indent + 4 );
+	}
 
 	os << endl;
Index: src/examples/limits.c
===================================================================
--- src/examples/limits.c	(revision 03286aaea98bf5731f95b7fdb6a443bceaddd2f0)
+++ src/examples/limits.c	(revision a8616147156b4751568c1946ca87d277fb2c3b77)
@@ -1,98 +1,111 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// limits.c -- 
+//
+// Author           : Peter A. Buhr
+// Created On       : Tue May 10 20:44:20 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue May 10 20:45:28 2016
+// Update Count     : 1
+// 
+
 #include <limits>
 
-int main() {
 // Integral Constants
 
-	short int m = MIN;
-	int m = MIN;
-	long int m = MIN;
-	long long int m = MIN;
+short int m = MIN;
+int m = MIN;
+long int m = MIN;
+long long int m = MIN;
 
-	short int M = MAX;
-	unsigned short int M = MAX;
-	int M = MAX;
-	unsigned int M = MAX;
-	long int M = MAX;
-	unsigned long int M = MAX;
-	long long int M = MAX;
-	unsigned long long int M = MAX;
+short int M = MAX;
+unsigned short int M = MAX;
+int M = MAX;
+unsigned int M = MAX;
+long int M = MAX;
+unsigned long int M = MAX;
+long long int M = MAX;
+unsigned long long int M = MAX;
 
 // Floating-Point Constants
 
-	float pi = PI;
-	float pi_2 = PI_2;
-	float pi_4 = PI_4;
-	float _1_pi = _1_PI;
-	float _2_pi = _2_PI;
-	float _2_sqrt_pi = _2_SQRT_PI;
+float pi = PI;
+float pi_2 = PI_2;
+float pi_4 = PI_4;
+float _1_pi = _1_PI;
+float _2_pi = _2_PI;
+float _2_sqrt_pi = _2_SQRT_PI;
 
-	double pi = PI;
-	double pi_2 = PI_2;
-	double pi_4 = PI_4;
-	double _1_pi = _1_PI;
-	double _2_pi = _2_PI;
-	double _2_SQRT_pi = _2_SQRT_PI;
+double pi = PI;
+double pi_2 = PI_2;
+double pi_4 = PI_4;
+double _1_pi = _1_PI;
+double _2_pi = _2_PI;
+double _2_SQRT_pi = _2_SQRT_PI;
 
-	long double pi = PI;
-	long double pi_2 = PI_2;
-	long double pi_4 = PI_4;
-	long double _1_pi = _1_PI;
-	long double _2_pi = _2_PI;
-	long double _2_sqrt_pi = _2_SQRT_PI;
+long double pi = PI;
+long double pi_2 = PI_2;
+long double pi_4 = PI_4;
+long double _1_pi = _1_PI;
+long double _2_pi = _2_PI;
+long double _2_sqrt_pi = _2_SQRT_PI;
 
-	_Complex pi = PI;
-	_Complex pi_2 = PI_2;
-	_Complex pi_4 = PI_4;
-	_Complex _1_pi = _1_PI;
-	_Complex _2_pi = _2_PI;
-	_Complex _2_sqrt_pi = _2_SQRT_PI;
+_Complex pi = PI;
+_Complex pi_2 = PI_2;
+_Complex pi_4 = PI_4;
+_Complex _1_pi = _1_PI;
+_Complex _2_pi = _2_PI;
+_Complex _2_sqrt_pi = _2_SQRT_PI;
 
-	long _Complex pi = PI;
-	long _Complex pi_2 = PI_2;
-	long _Complex pi_4 = PI_4;
-	long _Complex _1_pi = _1_PI;
-	long _Complex _2_pi = _2_PI;
-	long _Complex _2_sqrt_pi = _2_SQRT_PI;
+long _Complex pi = PI;
+long _Complex pi_2 = PI_2;
+long _Complex pi_4 = PI_4;
+long _Complex _1_pi = _1_PI;
+long _Complex _2_pi = _2_PI;
+long _Complex _2_sqrt_pi = _2_SQRT_PI;
 
-	float e = E;
-	float log2_e = LOG2_E;
-	float log10_e = LOG10_E;
-	float ln_2 = LN_2;
-	float ln_10 = LN_10;
-	float sqrt_2 = SQRT_2;
-	float _1_sqrt_2 = _1_SQRT_2;
+float e = E;
+float log2_e = LOG2_E;
+float log10_e = LOG10_E;
+float ln_2 = LN_2;
+float ln_10 = LN_10;
+float sqrt_2 = SQRT_2;
+float _1_sqrt_2 = _1_SQRT_2;
 
-	double e = E;
-	double log2_e = LOG2_E;
-	double log10_e = LOG10_E;
-	double ln_2 = LN_2;
-	double ln_10 = LN_10;
-	double sqrt_2 = SQRT_2;
-	double _1_sqrt_2 = _1_SQRT_2;
+double e = E;
+double log2_e = LOG2_E;
+double log10_e = LOG10_E;
+double ln_2 = LN_2;
+double ln_10 = LN_10;
+double sqrt_2 = SQRT_2;
+double _1_sqrt_2 = _1_SQRT_2;
 
-	long double e = E;
-	long double log2_e = LOG2_E;
-	long double log10_e = LOG10_E;
-	long double ln_2 = LN_2;
-	long double ln_10 = LN_10;
-	long double sqrt_2 = SQRT_2;
-	long double _1_sqrt_2 = _1_SQRT_2;
+long double e = E;
+long double log2_e = LOG2_E;
+long double log10_e = LOG10_E;
+long double ln_2 = LN_2;
+long double ln_10 = LN_10;
+long double sqrt_2 = SQRT_2;
+long double _1_sqrt_2 = _1_SQRT_2;
 
-	_Complex e = E;
-	_Complex log2_e = LOG2_E;
-	_Complex log10_e = LOG10_E;
-	_Complex ln_2 = LN_2;
-	_Complex ln_10 = LN_10;
-	_Complex sqrt_2 = SQRT_2;
-	_Complex _1_sqrt_2 = _1_SQRT_2;
+_Complex e = E;
+_Complex log2_e = LOG2_E;
+_Complex log10_e = LOG10_E;
+_Complex ln_2 = LN_2;
+_Complex ln_10 = LN_10;
+_Complex sqrt_2 = SQRT_2;
+_Complex _1_sqrt_2 = _1_SQRT_2;
 
-	long _Complex e = E;
-	long _Complex log2_e = LOG2_E;
-	long _Complex log10_e = LOG10_E;
-	long _Complex ln_2 = LN_2;
-	long _Complex ln_10 = LN_10;
-	long _Complex sqrt_2 = SQRT_2;
-	long _Complex _1_sqrt_2 = _1_SQRT_2;
-}
+long _Complex e = E;
+long _Complex log2_e = LOG2_E;
+long _Complex log10_e = LOG10_E;
+long _Complex ln_2 = LN_2;
+long _Complex ln_10 = LN_10;
+long _Complex sqrt_2 = SQRT_2;
+long _Complex _1_sqrt_2 = _1_SQRT_2;
 
 // Local Variables: //
