Index: src/ControlStruct/ExceptTranslate.cc
===================================================================
--- src/ControlStruct/ExceptTranslate.cc	(revision 7862059cce5f318d65bb3ffe71be2e849497ea0b)
+++ src/ControlStruct/ExceptTranslate.cc	(revision 1cdfa82ab4efb64ed6273f4e8e3993bc8895a419)
@@ -104,13 +104,13 @@
 		// Types used in translation, make sure to use clone.
 		// void (*function)();
-		FunctionType try_func_t;
+		FunctionType * try_func_t;
 		// void (*function)(int, exception);
-		FunctionType catch_func_t;
+		FunctionType * catch_func_t;
 		// int (*function)(exception);
-		FunctionType match_func_t;
+		FunctionType * match_func_t;
 		// bool (*function)(exception);
-		FunctionType handle_func_t;
+		FunctionType * handle_func_t;
 		// void (*function)(__attribute__((unused)) void *);
-		FunctionType finally_func_t;
+		FunctionType * finally_func_t;
 
 		StructInstType * create_except_type() {
@@ -125,9 +125,9 @@
 			handler_except_decl( nullptr ),
 			except_decl( nullptr ), node_decl( nullptr ), hook_decl( nullptr ),
-			try_func_t( noQualifiers, false ),
-			catch_func_t( noQualifiers, false ),
-			match_func_t( noQualifiers, false ),
-			handle_func_t( noQualifiers, false ),
-			finally_func_t( noQualifiers, false )
+			try_func_t( new FunctionType(noQualifiers, false) ),
+			catch_func_t( new FunctionType(noQualifiers, false) ),
+			match_func_t( new FunctionType(noQualifiers, false) ),
+			handle_func_t( new FunctionType(noQualifiers, false) ),
+			finally_func_t( new FunctionType(noQualifiers, false) )
 		{}
 
@@ -141,5 +141,5 @@
 		assert( except_decl );
 
-		ObjectDecl index_obj(
+		auto index_obj = new ObjectDecl(
 			"__handler_index",
 			Type::StorageClasses(),
@@ -149,5 +149,5 @@
 			/*init*/ NULL
 			);
-		ObjectDecl exception_obj(
+		auto exception_obj = new ObjectDecl(
 			"__exception_inst",
 			Type::StorageClasses(),
@@ -160,5 +160,5 @@
 			/*init*/ NULL
 			);
-		ObjectDecl bool_obj(
+		auto bool_obj = new ObjectDecl(
 			"__ret_bool",
 			Type::StorageClasses(),
@@ -169,5 +169,5 @@
 			std::list<Attribute *>{ new Attribute( "unused" ) }
 			);
-		ObjectDecl voidptr_obj(
+		auto voidptr_obj = new ObjectDecl(
 			"__hook",
 			Type::StorageClasses(),
@@ -184,14 +184,14 @@
 			);
 
-		ObjectDecl * unused_index_obj = index_obj.clone();
+		ObjectDecl * unused_index_obj = index_obj->clone();
 		unused_index_obj->attributes.push_back( new Attribute( "unused" ) );
 
-		catch_func_t.get_parameters().push_back( index_obj.clone() );
-		catch_func_t.get_parameters().push_back( exception_obj.clone() );
-		match_func_t.get_returnVals().push_back( unused_index_obj );
-		match_func_t.get_parameters().push_back( exception_obj.clone() );
-		handle_func_t.get_returnVals().push_back( bool_obj.clone() );
-		handle_func_t.get_parameters().push_back( exception_obj.clone() );
-		finally_func_t.get_parameters().push_back( voidptr_obj.clone() );
+		catch_func_t->get_parameters().push_back( index_obj );
+		catch_func_t->get_parameters().push_back( exception_obj->clone() );
+		match_func_t->get_returnVals().push_back( unused_index_obj );
+		match_func_t->get_parameters().push_back( exception_obj->clone() );
+		handle_func_t->get_returnVals().push_back( bool_obj );
+		handle_func_t->get_parameters().push_back( exception_obj );
+		finally_func_t->get_parameters().push_back( voidptr_obj );
 	}
 
@@ -204,5 +204,4 @@
 		call->get_args().push_back( throwStmt->get_expr() );
 		throwStmt->set_expr( nullptr );
-		delete throwStmt;
 		return new ExprStmt( call );
 	}
@@ -234,5 +233,4 @@
 			new UntypedExpr( new NameExpr( "__cfaabi_ehm__rethrow_terminate" ) )
 			) );
-		delete throwStmt;
 		return result;
 	}
@@ -251,5 +249,4 @@
 			);
 		result->labels = throwStmt->labels;
-		delete throwStmt;
 		return result;
 	}
@@ -267,5 +264,5 @@
 
 		return new FunctionDecl( "try", Type::StorageClasses(),
-			LinkageSpec::Cforall, try_func_t.clone(), body );
+			LinkageSpec::Cforall, try_func_t->clone(), body );
 	}
 
@@ -274,5 +271,5 @@
 		std::list<CaseStmt *> handler_wrappers;
 
-		FunctionType *func_type = catch_func_t.clone();
+		FunctionType *func_type = catch_func_t->clone();
 		DeclarationWithType * index_obj = func_type->get_parameters().front();
 		DeclarationWithType * except_obj = func_type->get_parameters().back();
@@ -384,5 +381,4 @@
 		modded_handler->set_cond( nullptr );
 		modded_handler->set_body( nullptr );
-		delete modded_handler;
 		return block;
 	}
@@ -396,5 +392,5 @@
 		CompoundStmt * body = new CompoundStmt();
 
-		FunctionType * func_type = match_func_t.clone();
+		FunctionType * func_type = match_func_t->clone();
 		DeclarationWithType * except_obj = func_type->get_parameters().back();
 
@@ -450,5 +446,5 @@
 		CompoundStmt * body = new CompoundStmt();
 
-		FunctionType * func_type = handle_func_t.clone();
+		FunctionType * func_type = handle_func_t->clone();
 		DeclarationWithType * except_obj = func_type->get_parameters().back();
 
@@ -530,9 +526,8 @@
 		CompoundStmt * body = finally->get_block();
 		finally->set_block( nullptr );
-		delete finally;
 		tryStmt->set_finally( nullptr );
 
 		return new FunctionDecl("finally", Type::StorageClasses(),
-			LinkageSpec::Cforall, finally_func_t.clone(), body);
+			LinkageSpec::Cforall, finally_func_t->clone(), body);
 	}
 
Index: src/ControlStruct/MLEMutator.cc
===================================================================
--- src/ControlStruct/MLEMutator.cc	(revision 7862059cce5f318d65bb3ffe71be2e849497ea0b)
+++ src/ControlStruct/MLEMutator.cc	(revision 1cdfa82ab4efb64ed6273f4e8e3993bc8895a419)
@@ -226,5 +226,4 @@
 
 		// transform break/continue statements into goto to simplify later handling of branches
-		delete branchStmt;
 		return new BranchStmt( exitLabel, BranchStmt::Goto );
 	}
