Index: src/CodeGen/CodeGenerator.cc
===================================================================
--- src/CodeGen/CodeGenerator.cc	(revision 424931dd6af68222c4b2549fae5ee43f3791bd72)
+++ src/CodeGen/CodeGenerator.cc	(revision ea23d103b3eb6a26112a27577b005db5a45b65ec)
@@ -89,5 +89,5 @@
 	}
 
-	CodeGenerator::CodeGenerator( std::ostream & os, bool mangle ) : indent( *this), cur_indent( 0 ), insideFunction( false ), output( os ), printLabels( *this ), mangle( mangle ) {}
+	CodeGenerator::CodeGenerator( std::ostream & os, bool pretty ) : indent( *this), cur_indent( 0 ), insideFunction( false ), output( os ), printLabels( *this ), pretty( pretty ) {}
 
 	CodeGenerator::CodeGenerator( std::ostream & os, std::string init, int indentation, bool infunp )
@@ -102,5 +102,5 @@
 
 	string CodeGenerator::mangleName( DeclarationWithType * decl ) {
-		if ( ! mangle ) return decl->get_name();
+		if ( pretty ) return decl->get_name();
 		if ( decl->get_mangleName() != "" ) {
 			// need to incorporate scope level in order to differentiate names for destructors
@@ -140,5 +140,5 @@
 			output << "_Noreturn ";
 		} // if
-		output << genType( functionDecl->get_functionType(), mangleName( functionDecl ) );
+		output << genType( functionDecl->get_functionType(), mangleName( functionDecl ), pretty );
 
 		// how to get this to the Functype?
@@ -161,5 +161,5 @@
 
 		handleStorageClass( objectDecl );
-		output << genType( objectDecl->get_type(), mangleName( objectDecl ) );
+		output << genType( objectDecl->get_type(), mangleName( objectDecl ), pretty );
 
 		asmName( objectDecl );
@@ -178,5 +178,5 @@
 	void CodeGenerator::handleAggregate( AggregateDecl * aggDecl ) {
 		genAttributes( aggDecl->get_attributes() );
-		
+
 		if ( aggDecl->get_name() != "" )
 			output << aggDecl->get_name();
@@ -249,5 +249,5 @@
 		assert( false && "Typedefs are removed and substituted in earlier passes." );
 		//output << "typedef ";
-		//output << genType( typeDecl->get_base(), typeDecl->get_name() );
+		//output << genType( typeDecl->get_base(), typeDecl->get_name(), pretty );
 	}
 
@@ -258,5 +258,5 @@
 		output << "extern unsigned long " << typeDecl->get_name();
 		if ( typeDecl->get_base() ) {
-			output << " = sizeof( " << genType( typeDecl->get_base(), "" ) << " )";
+			output << " = sizeof( " << genType( typeDecl->get_base(), "", pretty ) << " )";
 		} // if
 	}
@@ -552,5 +552,5 @@
 			// at least one result type of cast, but not an lvalue
 			output << "(";
-			output << genType( castExpr->get_result(), "" );
+			output << genType( castExpr->get_result(), "", pretty );
 			output << ")";
 		} else {
@@ -592,5 +592,5 @@
 		output << "sizeof(";
 		if ( sizeofExpr->get_isType() ) {
-			output << genType( sizeofExpr->get_type(), "" );
+			output << genType( sizeofExpr->get_type(), "", pretty );
 		} else {
 			sizeofExpr->get_expr()->accept( *this );
@@ -604,5 +604,5 @@
 		output << "__alignof__(";
 		if ( alignofExpr->get_isType() ) {
-			output << genType( alignofExpr->get_type(), "" );
+			output << genType( alignofExpr->get_type(), "", pretty );
 		} else {
 			alignofExpr->get_expr()->accept( *this );
@@ -618,5 +618,5 @@
 		// use GCC builtin
 		output << "__builtin_offsetof(";
-		output << genType( offsetofExpr->get_type(), "" );
+		output << genType( offsetofExpr->get_type(), "", pretty );
 		output << ", " << mangleName( offsetofExpr->get_member() );
 		output << ")";
@@ -680,5 +680,5 @@
 	void CodeGenerator::visit( CompoundLiteralExpr *compLitExpr ) {
 		assert( compLitExpr->get_type() && dynamic_cast< ListInit * > ( compLitExpr->get_initializer() ) );
-		output << "(" << genType( compLitExpr->get_type(), "" ) << ")";
+		output << "(" << genType( compLitExpr->get_type(), "", pretty ) << ")";
 		compLitExpr->get_initializer()->accept( *this );
 	}
Index: src/CodeGen/CodeGenerator.h
===================================================================
--- src/CodeGen/CodeGenerator.h	(revision 424931dd6af68222c4b2549fae5ee43f3791bd72)
+++ src/CodeGen/CodeGenerator.h	(revision ea23d103b3eb6a26112a27577b005db5a45b65ec)
@@ -30,5 +30,5 @@
 		static int tabsize;
 
-		CodeGenerator( std::ostream &os, bool mangle = true );
+		CodeGenerator( std::ostream &os, bool pretty = false );
 		CodeGenerator( std::ostream &os, std::string, int indent = 0, bool infun = false );
 		CodeGenerator( std::ostream &os, char *, int indent = 0, bool infun = false );
@@ -119,5 +119,5 @@
 		std::ostream &output;
 		LabelPrinter printLabels;
-		bool mangle = true;
+		bool pretty = false;  // pretty print
 
 		void printDesignators( std::list< Expression * > & );
Index: src/CodeGen/GenType.cc
===================================================================
--- src/CodeGen/GenType.cc	(revision 424931dd6af68222c4b2549fae5ee43f3791bd72)
+++ src/CodeGen/GenType.cc	(revision ea23d103b3eb6a26112a27577b005db5a45b65ec)
@@ -28,5 +28,5 @@
 	class GenType : public Visitor {
 	  public:
-		GenType( const std::string &typeString, bool mangle = true );
+		GenType( const std::string &typeString, bool pretty = false );
 		std::string get_typeString() const { return typeString; }
 		void set_typeString( const std::string &newValue ) { typeString = newValue; }
@@ -51,13 +51,13 @@
 
 		std::string typeString;
-		bool mangle = true;
+		bool pretty = false; // pretty print
 	};
 
-	std::string genType( Type *type, const std::string &baseString, bool mangle ) {
-		GenType gt( baseString, mangle );
-		std::ostringstream os;
-		
+	std::string genType( Type *type, const std::string &baseString, bool pretty ) {
+		GenType gt( baseString, pretty );
+		std::ostringstream os;
+
 		if ( ! type->get_attributes().empty() ) {
-			CodeGenerator cg( os, mangle );
+			CodeGenerator cg( os, pretty );
 			cg.genAttributes( type->get_attributes() );
 		} // if
@@ -67,5 +67,9 @@
 	}
 
-	GenType::GenType( const std::string &typeString, bool mangle ) : typeString( typeString ), mangle( mangle ) {}
+  std::string genPrettyType( Type * type, const std::string & baseString ) {
+  	return genType( type, baseString, true );
+  }
+
+	GenType::GenType( const std::string &typeString, bool pretty ) : typeString( typeString ), pretty( pretty ) {}
 
 	void GenType::visit( VoidType *voidType ) {
@@ -108,5 +112,5 @@
 		} // if
 		if ( dimension != 0 ) {
-			CodeGenerator cg( os, mangle );
+			CodeGenerator cg( os, pretty );
 			dimension->accept( cg );
 		} else if ( isVarLen ) {
@@ -162,5 +166,5 @@
 			} // if
 		} else {
-			CodeGenerator cg( os, mangle );
+			CodeGenerator cg( os, pretty );
 			os << "(" ;
 
@@ -203,6 +207,15 @@
 
 	void GenType::visit( TupleType * tupleType ) {
-		assertf( ! mangle, "Tuple types should not make it to Code Gen." );
+		assertf( pretty, "Tuple types should not make it to Code Gen." );
 		Visitor::visit( tupleType );
+		unsigned int i = 0;
+		std::ostringstream os;
+		os << "[";
+		for ( Type * t : *tupleType ) {
+			i++;
+			os << genType( t, "", pretty ) << (i == tupleType->size() ? "" : ", ");
+		}
+		os << "]";
+		typeString = os.str() + typeString;
 	}
 
@@ -214,5 +227,5 @@
 	void GenType::visit( ZeroType *zeroType ) {
 		// ideally these wouldn't hit codegen at all, but should be safe to make them ints
-		typeString = "long int " + typeString;
+		typeString = (pretty ? "zero_t " : "long int ") + typeString;
 		handleQualifiers( zeroType );
 	}
@@ -220,5 +233,5 @@
 	void GenType::visit( OneType *oneType ) {
 		// ideally these wouldn't hit codegen at all, but should be safe to make them ints
-		typeString = "long int " + typeString;
+		typeString = (pretty ? "one_t " : "long int ") + typeString;
 		handleQualifiers( oneType );
 	}
Index: src/CodeGen/GenType.h
===================================================================
--- src/CodeGen/GenType.h	(revision 424931dd6af68222c4b2549fae5ee43f3791bd72)
+++ src/CodeGen/GenType.h	(revision ea23d103b3eb6a26112a27577b005db5a45b65ec)
@@ -21,5 +21,6 @@
 
 namespace CodeGen {
-	std::string genType( Type *type, const std::string &baseString, bool mangle = true );
+	std::string genType( Type *type, const std::string &baseString, bool pretty = false );
+  std::string genPrettyType( Type * type, const std::string & baseString );
 } // namespace CodeGen
 
Index: src/CodeGen/Generate.cc
===================================================================
--- src/CodeGen/Generate.cc	(revision 424931dd6af68222c4b2549fae5ee43f3791bd72)
+++ src/CodeGen/Generate.cc	(revision ea23d103b3eb6a26112a27577b005db5a45b65ec)
@@ -5,5 +5,5 @@
 // file "LICENCE" distributed with Cforall.
 //
-// Generate.cc -- 
+// Generate.cc --
 //
 // Author           : Richard C. Bilson
@@ -26,6 +26,6 @@
 
 namespace CodeGen {
-	void generate( std::list< Declaration* > translationUnit, std::ostream &os, bool doIntrinsics ) {
-		CodeGen::CodeGenerator cgv( os );
+	void generate( std::list< Declaration* > translationUnit, std::ostream &os, bool doIntrinsics, bool pretty ) {
+		CodeGen::CodeGenerator cgv( os, pretty );
 
 		for ( std::list<Declaration *>::iterator i = translationUnit.begin(); i != translationUnit.end();  i++ ) {
Index: src/CodeGen/Generate.h
===================================================================
--- src/CodeGen/Generate.h	(revision 424931dd6af68222c4b2549fae5ee43f3791bd72)
+++ src/CodeGen/Generate.h	(revision ea23d103b3eb6a26112a27577b005db5a45b65ec)
@@ -5,5 +5,5 @@
 // file "LICENCE" distributed with Cforall.
 //
-// Generate.h -- 
+// Generate.h --
 //
 // Author           : Richard C. Bilson
@@ -24,5 +24,5 @@
 namespace CodeGen {
 	/// Generates code
-	void generate( std::list< Declaration* > translationUnit, std::ostream &os, bool doIntrinsics );
+	void generate( std::list< Declaration* > translationUnit, std::ostream &os, bool doIntrinsics, bool pretty );
 } // namespace CodeGen
 
Index: src/GenPoly/Box.cc
===================================================================
--- src/GenPoly/Box.cc	(revision 424931dd6af68222c4b2549fae5ee43f3791bd72)
+++ src/GenPoly/Box.cc	(revision ea23d103b3eb6a26112a27577b005db5a45b65ec)
@@ -1307,4 +1307,11 @@
 				}
 			}
+			// errors should have been caught by this point, remove initializers from parameters to allow correct codegen of default arguments
+			for ( Declaration * param : functionDecl->get_functionType()->get_parameters() ) {
+				if ( ObjectDecl * obj = dynamic_cast< ObjectDecl * >( param ) ) {
+					delete obj->get_init();
+					obj->set_init( nullptr );
+				}
+			}
 			return functionDecl;
 		}
Index: src/InitTweak/FixInit.cc
===================================================================
--- src/InitTweak/FixInit.cc	(revision 424931dd6af68222c4b2549fae5ee43f3791bd72)
+++ src/InitTweak/FixInit.cc	(revision ea23d103b3eb6a26112a27577b005db5a45b65ec)
@@ -104,4 +104,8 @@
 			virtual void visit( CompoundStmt *compoundStmt ) override;
 			virtual void visit( DeclStmt *stmt ) override;
+
+			// don't go into other functions
+			virtual void visit( FunctionDecl *decl ) override {}
+
 		  protected:
 			ObjectSet curVars;
@@ -166,9 +170,10 @@
 			typedef std::list< OrderedDecls > OrderedDeclsStack;
 
-			InsertDtors( LabelFinder & finder ) : labelVars( finder.vars ) {}
+			InsertDtors( LabelFinder & finder ) : finder( finder ), labelVars( finder.vars ) {}
 
 			using Parent::visit;
 
 			virtual void visit( ObjectDecl * objDecl ) override;
+			virtual void visit( FunctionDecl * funcDecl ) override;
 
 			virtual void visit( CompoundStmt * compoundStmt ) override;
@@ -178,4 +183,5 @@
 			void handleGoto( BranchStmt * stmt );
 
+			LabelFinder & finder;
 			LabelFinder::LabelMap & labelVars;
 			OrderedDeclsStack reverseDeclOrder;
@@ -318,5 +324,4 @@
 			LabelFinder finder;
 			InsertDtors inserter( finder );
-			acceptAll( translationUnit, finder );
 			acceptAll( translationUnit, inserter );
 		}
@@ -778,5 +783,5 @@
 		}
 
-		void ObjDeclCollector::visit( CompoundStmt *compoundStmt ) {
+		void ObjDeclCollector::visit( CompoundStmt * compoundStmt ) {
 			std::set< ObjectDecl * > prevVars = curVars;
 			Parent::visit( compoundStmt );
@@ -784,5 +789,5 @@
 		}
 
-		void ObjDeclCollector::visit( DeclStmt *stmt ) {
+		void ObjDeclCollector::visit( DeclStmt * stmt ) {
 			// keep track of all variables currently in scope
 			if ( ObjectDecl * objDecl = dynamic_cast< ObjectDecl * > ( stmt->get_decl() ) ) {
@@ -828,4 +833,22 @@
 			} // if
 			Parent::visit( objDecl );
+		}
+
+		template< typename Visitor >
+		void handleFuncDecl( FunctionDecl * funcDecl, Visitor & visitor ) {
+			maybeAccept( funcDecl->get_functionType(), visitor );
+			acceptAll( funcDecl->get_oldDecls(), visitor );
+			maybeAccept( funcDecl->get_statements(), visitor );
+		}
+
+		void InsertDtors::visit( FunctionDecl * funcDecl ) {
+			// each function needs to have its own set of labels
+			ValueGuard< LabelFinder::LabelMap > oldLabels( labelVars );
+			labelVars.clear();
+			handleFuncDecl( funcDecl, finder );
+
+			// all labels for this function have been collected, insert destructors as appropriate.
+			// can't be Parent::mutate, because ObjDeclCollector bottoms out on FunctionDecl
+			handleFuncDecl( funcDecl, *this );
 		}
 
@@ -952,5 +975,5 @@
 			std::set_difference( usedUninit.begin(), usedUninit.end(), unhandled.begin(), unhandled.end(), std::inserter( diff, diff.begin() ) );
 			for ( DeclarationWithType * member : diff ) {
-				emit( "in ", CodeGen::genType( function->get_functionType(), function->get_name(), false ), ", field ", member->get_name(), " used before being constructed" );
+				emit( "in ", CodeGen::genPrettyType( function->get_functionType(), function->get_name() ), ", field ", member->get_name(), " used before being constructed" );
 			}
 
@@ -997,5 +1020,5 @@
 							}
 						} catch ( SemanticError & error ) {
-							emit( "in ", CodeGen::genType( function->get_functionType(), function->get_name(), false ), ", field ", field->get_name(), " not explicitly ", isCtor ? "constructed" : "destructed",  " and no ", isCtor ? "default constructor" : "destructor", " found" );
+							emit( "in ", CodeGen::genPrettyType( function->get_functionType(), function->get_name() ), ", field ", field->get_name(), " not explicitly ", isCtor ? "constructed" : "destructed",  " and no ", isCtor ? "default constructor" : "destructor", " found" );
 						}
 					}
Index: src/ResolvExpr/AlternativeFinder.cc
===================================================================
--- src/ResolvExpr/AlternativeFinder.cc	(revision 424931dd6af68222c4b2549fae5ee43f3791bd72)
+++ src/ResolvExpr/AlternativeFinder.cc	(revision ea23d103b3eb6a26112a27577b005db5a45b65ec)
@@ -403,14 +403,15 @@
 			// End of actuals - Handle default values
 			if ( SingleInit *si = dynamic_cast<SingleInit *>( defaultValue )) {
-				// so far, only constant expressions are accepted as default values
-				if ( ConstantExpr *cnstexpr = dynamic_cast<ConstantExpr *>( si->get_value()) ) {
-					if ( Constant *cnst = dynamic_cast<Constant *>( cnstexpr->get_constant() ) ) {
-						if ( unify( formalType, cnst->get_type(), resultEnv, resultNeed, resultHave, openVars, indexer ) ) {
-							// xxx - Don't know if this is right
-							*out++ = cnstexpr->clone();
-							return true;
+				if ( CastExpr * castExpr = dynamic_cast< CastExpr * >( si->get_value() ) ) {
+					// so far, only constant expressions are accepted as default values
+					if ( ConstantExpr *cnstexpr = dynamic_cast<ConstantExpr *>( castExpr->get_arg() ) ) {
+						if ( Constant *cnst = dynamic_cast<Constant *>( cnstexpr->get_constant() ) ) {
+							if ( unify( formalType, cnst->get_type(), resultEnv, resultNeed, resultHave, openVars, indexer ) ) {
+								*out++ = cnstexpr->clone();
+								return true;
+							} // if
 						} // if
 					} // if
-				} // if
+				}
 			} // if
 			return false;
Index: src/SymTab/Mangler.cc
===================================================================
--- src/SymTab/Mangler.cc	(revision 424931dd6af68222c4b2549fae5ee43f3791bd72)
+++ src/SymTab/Mangler.cc	(revision ea23d103b3eb6a26112a27577b005db5a45b65ec)
@@ -172,5 +172,5 @@
 			for ( std::list< Expression* >::const_iterator param = params.begin(); param != params.end(); ++param ) {
 				TypeExpr *paramType = dynamic_cast< TypeExpr* >( *param );
-				assert(paramType && "Aggregate parameters should be type expressions");
+				assertf(paramType, "Aggregate parameters should be type expressions: %s", toString(*param).c_str());
 				maybeAccept( paramType->get_type(), *this );
 			}
Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision 424931dd6af68222c4b2549fae5ee43f3791bd72)
+++ src/SymTab/Validate.cc	(revision ea23d103b3eb6a26112a27577b005db5a45b65ec)
@@ -696,4 +696,5 @@
 			FunctionDecl * newDecl = new FunctionDecl( ret->get_name(), ret->get_storageClass(), ret->get_linkage(), funtype, 0, ret->get_isInline(), ret->get_isNoreturn(), objDecl->get_attributes() );
 			objDecl->get_attributes().clear();
+			objDecl->set_type( nullptr );
 			delete objDecl;
 			return newDecl;
Index: src/main.cc
===================================================================
--- src/main.cc	(revision 424931dd6af68222c4b2549fae5ee43f3791bd72)
+++ src/main.cc	(revision ea23d103b3eb6a26112a27577b005db5a45b65ec)
@@ -76,5 +76,6 @@
 	validp = false,
 	errorp = false,
-	codegenp = false;
+	codegenp = false,
+	prettycodegenp = false;
 
 static void parse_cmdline( int argc, char *argv[], const char *& filename );
@@ -309,5 +310,5 @@
 		} // if
 
-		CodeGen::generate( translationUnit, *output, ! noprotop );
+		CodeGen::generate( translationUnit, *output, ! noprotop, prettycodegenp );
 
 		CodeGen::FixMain::fix( *output, treep ? "../prelude/bootloader.c" : CFA_LIBDIR "/bootloader.c" );
@@ -374,5 +375,5 @@
 
 	int c;
-	while ( (c = getopt_long( argc, argv, "abBcdefglmnpqrstTvyzD:F:", long_opts, &long_index )) != -1 ) {
+	while ( (c = getopt_long( argc, argv, "abBcdefglmnpqrstTvyzZD:F:", long_opts, &long_index )) != -1 ) {
 		switch ( c ) {
 		  case Ast:
@@ -450,4 +451,6 @@
 		  case 'z':
 			codegenp = true;
+			case 'Z':
+			prettycodegenp = true;
 			break;
 		  case 'D':										// ignore -Dxxx
Index: src/tests/.expect/32/declarationSpecifier.txt
===================================================================
--- src/tests/.expect/32/declarationSpecifier.txt	(revision 424931dd6af68222c4b2549fae5ee43f3791bd72)
+++ src/tests/.expect/32/declarationSpecifier.txt	(revision ea23d103b3eb6a26112a27577b005db5a45b65ec)
@@ -1,7 +1,7 @@
-__attribute__ ((__malloc__,__nothrow__,__leaf__)) extern void *malloc(unsigned int __size);
+__attribute__ ((__nothrow__,__leaf__,__malloc__)) extern void *malloc(unsigned int __size);
 __attribute__ ((__nothrow__,__leaf__)) extern void free(void *__ptr);
-__attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void abort(void);
-__attribute__ ((__nonnull__(1),__nothrow__,__leaf__)) extern int atexit(void (*__func)(void));
-__attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void exit(int __status);
+__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void abort(void);
+__attribute__ ((__nothrow__,__leaf__,__nonnull__(1))) extern int atexit(void (*__func)(void));
+__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void exit(int __status);
 extern int printf(const char *__restrict __format, ...);
 volatile const short __x1__CVs_1;
@@ -629,9 +629,9 @@
 }
 static inline int invoke_main(int argc, char* argv[], char* envp[]) { (void)argc; (void)argv; (void)envp; return __main__Fi_iPPCc__1(argc, argv); }
-__attribute__ ((__malloc__,__nothrow__,__leaf__)) extern void *malloc(unsigned int __size);
+__attribute__ ((__nothrow__,__leaf__,__malloc__)) extern void *malloc(unsigned int __size);
 __attribute__ ((__nothrow__,__leaf__)) extern void free(void *__ptr);
-__attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void abort(void);
-__attribute__ ((__nonnull__(1),__nothrow__,__leaf__)) extern int atexit(void (*__func)(void));
-__attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void exit(int __status);
+__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void abort(void);
+__attribute__ ((__nothrow__,__leaf__,__nonnull__(1))) extern int atexit(void (*__func)(void));
+__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void exit(int __status);
 extern int printf(const char *__restrict __format, ...);
 static inline int invoke_main(int argc, char **argv, char **envp);
Index: src/tests/.expect/32/extension.txt
===================================================================
--- src/tests/.expect/32/extension.txt	(revision 424931dd6af68222c4b2549fae5ee43f3791bd72)
+++ src/tests/.expect/32/extension.txt	(revision ea23d103b3eb6a26112a27577b005db5a45b65ec)
@@ -1,7 +1,7 @@
-__attribute__ ((__malloc__,__nothrow__,__leaf__)) extern void *malloc(unsigned int __size);
+__attribute__ ((__nothrow__,__leaf__,__malloc__)) extern void *malloc(unsigned int __size);
 __attribute__ ((__nothrow__,__leaf__)) extern void free(void *__ptr);
-__attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void abort(void);
-__attribute__ ((__nonnull__(1),__nothrow__,__leaf__)) extern int atexit(void (*__func)(void));
-__attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void exit(int __status);
+__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void abort(void);
+__attribute__ ((__nothrow__,__leaf__,__nonnull__(1))) extern int atexit(void (*__func)(void));
+__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void exit(int __status);
 extern int printf(const char *__restrict __format, ...);
 __extension__ int __a__i_1;
@@ -77,4 +77,7 @@
     __B__C2eE_1,
 };
+__extension__ int __f__Fi___1();
+__extension__ int i;
+__extension__ int j;
 __extension__ int __fred__Fi_i__1(int __p__i_1){
     int ___retval_fred__i_1;
@@ -83,4 +86,7 @@
         __extension__ int __b__i_2;
         __extension__ int __c__i_2;
+        __extension__ int *__x__Pi_2;
+        __extension__ int *__y__Pi_2;
+        __extension__ int *__z__Pi_2;
     };
     int __i__i_2 = ((int )(__extension__ __a__i_1+__extension__ 3));
@@ -94,4 +100,7 @@
     ((void)((_tmp_cp_ret0=__extension__ __fred__Fi_i__1(3)) , _tmp_cp_ret0));
     ((void)((*((int *)(&_tmp_cp_ret0)))) /* ^?{} */);
+    __extension__ int __mary__Fi_i__2(int __p__i_2){
+        int ___retval_mary__i_2;
+    }
     ((void)__extension__ sizeof(3));
     ((void)__extension__ (((int )(3!=((int )0))) || ((int )(4!=((int )0)))));
Index: src/tests/.expect/32/gccExtensions.txt
===================================================================
--- src/tests/.expect/32/gccExtensions.txt	(revision 424931dd6af68222c4b2549fae5ee43f3791bd72)
+++ src/tests/.expect/32/gccExtensions.txt	(revision ea23d103b3eb6a26112a27577b005db5a45b65ec)
@@ -1,7 +1,7 @@
-__attribute__ ((__malloc__,__nothrow__,__leaf__)) extern void *malloc(unsigned int __size);
+__attribute__ ((__nothrow__,__leaf__,__malloc__)) extern void *malloc(unsigned int __size);
 __attribute__ ((__nothrow__,__leaf__)) extern void free(void *__ptr);
-__attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void abort(void);
-__attribute__ ((__nonnull__(1),__nothrow__,__leaf__)) extern int atexit(void (*__func)(void));
-__attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void exit(int __status);
+__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void abort(void);
+__attribute__ ((__nothrow__,__leaf__,__nonnull__(1))) extern int atexit(void (*__func)(void));
+__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void exit(int __status);
 extern int printf(const char *__restrict __format, ...);
 extern int __x__i_1 asm ( "xx" );
@@ -166,9 +166,9 @@
 }
 static inline int invoke_main(int argc, char* argv[], char* envp[]) { (void)argc; (void)argv; (void)envp; return __main__Fi_iPPCc__1(argc, argv); }
-__attribute__ ((__malloc__,__nothrow__,__leaf__)) extern void *malloc(unsigned int __size);
+__attribute__ ((__nothrow__,__leaf__,__malloc__)) extern void *malloc(unsigned int __size);
 __attribute__ ((__nothrow__,__leaf__)) extern void free(void *__ptr);
-__attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void abort(void);
-__attribute__ ((__nonnull__(1),__nothrow__,__leaf__)) extern int atexit(void (*__func)(void));
-__attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void exit(int __status);
+__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void abort(void);
+__attribute__ ((__nothrow__,__leaf__,__nonnull__(1))) extern int atexit(void (*__func)(void));
+__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void exit(int __status);
 extern int printf(const char *__restrict __format, ...);
 static inline int invoke_main(int argc, char **argv, char **envp);
