Index: src/SymTab/Mangler.cc
===================================================================
--- src/SymTab/Mangler.cc	(revision a7c31e0da9ab16ce81726854043ba727cbb67738)
+++ src/SymTab/Mangler.cc	(revision 954c954fd6522dace325fb95ef0cfd3247c319c3)
@@ -551,10 +551,8 @@
 			GuardValue( inFunctionType );
 			inFunctionType = true;
-			std::vector< ast::ptr< ast::Type > > returnTypes = getTypes( functionType->returns );
-			if (returnTypes.empty()) mangleName << Encoding::void_t;
-			else accept_each( returnTypes, *visitor );
+			if (functionType->returns.empty()) mangleName << Encoding::void_t;
+			else accept_each( functionType->returns, *visitor );
 			mangleName << "_";
-			std::vector< ast::ptr< ast::Type > > paramTypes = getTypes( functionType->params );
-			accept_each( paramTypes, *visitor );
+			accept_each( functionType->params, *visitor );
 			mangleName << "_";
 		}
Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision a7c31e0da9ab16ce81726854043ba727cbb67738)
+++ src/SymTab/Validate.cc	(revision 954c954fd6522dace325fb95ef0cfd3247c319c3)
@@ -1384,4 +1384,5 @@
 	/// Replaces enum types by int, and function/array types in function parameter and return
 	/// lists by appropriate pointers
+	/*
 	struct EnumAndPointerDecay_new {
 		const ast::EnumDecl * previsit( const ast::EnumDecl * enumDecl ) {
@@ -1434,4 +1435,5 @@
 		}
 	};
+	*/
 
 	/// expand assertions from a trait instance, performing appropriate type variable substitutions
@@ -1837,9 +1839,9 @@
 const ast::Type * validateType(
 		const CodeLocation & loc, const ast::Type * type, const ast::SymbolTable & symtab ) {
-	ast::Pass< EnumAndPointerDecay_new > epc;
+	// ast::Pass< EnumAndPointerDecay_new > epc;
 	ast::Pass< LinkReferenceToTypes_new > lrt{ loc, symtab };
 	ast::Pass< ForallPointerDecay_new > fpd{ loc };
 
-	return type->accept( epc )->accept( lrt )->accept( fpd );
+	return type->accept( lrt )->accept( fpd );
 }
 
