Index: src/InitTweak/InitTweak.cc
===================================================================
--- src/InitTweak/InitTweak.cc	(revision ad4581b92c4dfccbb3a38993ff4021d2330b9138)
+++ src/InitTweak/InitTweak.cc	(revision 9b4c936ccc92263445f7d8482d370551639e0f1f)
@@ -79,4 +79,6 @@
 	public:
 		ExprImpl( Expression * expr ) : arg( expr ) {}
+
+		~ExprImpl() { delete arg; }
 
 		virtual std::list< Expression * > next( std::list< Expression * > & indices ) {
@@ -122,4 +124,5 @@
 
 	void InitExpander::clearArrayIndices() {
+		deleteAll( indices );
 		indices.clear();
 	}
Index: src/SymTab/Autogen.cc
===================================================================
--- src/SymTab/Autogen.cc	(revision ad4581b92c4dfccbb3a38993ff4021d2330b9138)
+++ src/SymTab/Autogen.cc	(revision 9b4c936ccc92263445f7d8482d370551639e0f1f)
@@ -64,5 +64,5 @@
 
 	template< typename OutputIterator >
-	void makeUnionFieldsAssignment( ObjectDecl *srcParam, ObjectDecl *dstParam, UnionInstType *unionType, OutputIterator out ) {
+	void makeUnionFieldsAssignment( ObjectDecl *srcParam, ObjectDecl *dstParam, OutputIterator out ) {
 		UntypedExpr *copy = new UntypedExpr( new NameExpr( "__builtin_memcpy" ) );
 		copy->get_args().push_back( new VariableExpr( dstParam ) );
@@ -413,6 +413,6 @@
 		dtorDecl->fixUniqueId();
 
-		makeUnionFieldsAssignment( srcParam, dstParam, cloneWithParams( refType, unionParams ), back_inserter( assignDecl->get_statements()->get_kids() ) );
-		if ( isDynamicLayout ) makeUnionFieldsAssignment( srcParam, returnVal, cloneWithParams( refType, unionParams ), back_inserter( assignDecl->get_statements()->get_kids() ) );
+		makeUnionFieldsAssignment( srcParam, dstParam, back_inserter( assignDecl->get_statements()->get_kids() ) );
+		if ( isDynamicLayout ) makeUnionFieldsAssignment( srcParam, returnVal, back_inserter( assignDecl->get_statements()->get_kids() ) );
 		else assignDecl->get_statements()->get_kids().push_back( new ReturnStmt( noLabels, new VariableExpr( srcParam ) ) );
 
@@ -434,5 +434,5 @@
 				ctor->fixUniqueId();
 
-				makeUnionFieldsAssignment( srcParam, dstParam, cloneWithParams( refType, unionParams ), back_inserter( ctor->get_statements()->get_kids() ) );
+				makeUnionFieldsAssignment( srcParam, dstParam, back_inserter( ctor->get_statements()->get_kids() ) );
 				memCtors.push_back( ctor );
 				// only generate a ctor for the first field
