Index: src/SymTab/Autogen.cc
===================================================================
--- src/SymTab/Autogen.cc	(revision 83882e9be425bcbc142e8249eb8a86cafa148895)
+++ src/SymTab/Autogen.cc	(revision f203a7a1eb56be0df147abdb42ec52c9a2c51be4)
@@ -62,7 +62,4 @@
 		void previsit( FunctionDecl * functionDecl );
 
-		void previsit( FunctionType * ftype );
-		void previsit( PointerType * ptype );
-
 		void previsit( CompoundStmt * compoundStmt );
 
@@ -72,5 +69,4 @@
 		unsigned int functionNesting = 0;     // current level of nested functions
 
-		InitTweak::ManagedTypes managedTypes;
 		std::vector< FuncData > data;
 	};
@@ -622,5 +618,4 @@
 	// generate ctor/dtors/assign for typedecls, e.g., otype T = int *;
 	void AutogenerateRoutines::previsit( TypeDecl * typeDecl ) {
-		visit_children = false;
 		if ( ! typeDecl->base ) return;
 
@@ -628,14 +623,5 @@
 		TypeFuncGenerator gen( typeDecl, &refType, data, functionNesting, indexer );
 		generateFunctions( gen, declsToAddAfter );
-	}
-
-	void AutogenerateRoutines::previsit( FunctionType *) {
-		// ensure that we don't add assignment ops for types defined as part of the function
-		visit_children = false;
-	}
-
-	void AutogenerateRoutines::previsit( PointerType *) {
-		// ensure that we don't add assignment ops for types defined as part of the pointer
-		visit_children = false;
+
 	}
 
@@ -645,17 +631,13 @@
 	}
 
-	void AutogenerateRoutines::previsit( FunctionDecl * functionDecl ) {
-		visit_children = false;
-		// record the existence of this function as appropriate
-		managedTypes.handleDWT( functionDecl );
-
-		maybeAccept( functionDecl->type, *visitor );
+	void AutogenerateRoutines::previsit( FunctionDecl * ) {
+		// Track whether we're currently in a function.
+		// Can ignore function type idiosyncrasies, because function type can never
+		// declare a new type.
 		functionNesting += 1;
-		maybeAccept( functionDecl->statements, *visitor );
-		functionNesting -= 1;
+		GuardAction( [this]()  { functionNesting -= 1; } );
 	}
 
 	void AutogenerateRoutines::previsit( CompoundStmt * ) {
-		GuardScope( managedTypes );
 		GuardScope( structsDone );
 	}
