Index: src/InitTweak/InitTweak.cc
===================================================================
--- src/InitTweak/InitTweak.cc	(revision 72e9222a9026d1f801ca6ee36c7a5b77604f5304)
+++ src/InitTweak/InitTweak.cc	(revision aedfd91633ca1585181a0ce220879ca2041ede7c)
@@ -85,17 +85,31 @@
 		}
 	}
+	namespace {
+		VariableExpr * getCalledFunction( ApplicationExpr * appExpr ) {
+			assert( appExpr );
+			return dynamic_cast< VariableExpr * >( appExpr->get_function() );
+		}
+	}
+
+	ApplicationExpr * isIntrinsicCallExpr( Expression * expr ) {
+		ApplicationExpr * appExpr = dynamic_cast< ApplicationExpr * >( expr );
+		if ( ! appExpr ) return NULL;
+		VariableExpr * function = getCalledFunction( appExpr );
+		assert( function );
+		// check for Intrinsic only - don't want to remove all overridable ctor/dtors because autogenerated ctor/dtor
+		// will call all member dtors, and some members may have a user defined dtor.
+		return function->get_var()->get_linkage() == LinkageSpec::Intrinsic ? appExpr : NULL;
+	}
 
 	bool isInstrinsicSingleArgCallStmt( Statement * stmt ) {
 		Expression * callExpr = getCtorDtorCall( stmt );
 		if ( ! callExpr ) return false;
-		ApplicationExpr * appExpr = dynamic_cast< ApplicationExpr * >( callExpr );
-		assert( appExpr );
-		VariableExpr * function = dynamic_cast< VariableExpr * >( appExpr->get_function() );
-		assert( function );
-		// check for Intrinsic only - don't want to remove all overridable ctor/dtors because autogenerated ctor/dtor
-		// will call all member dtors, and some members may have a user defined dtor.
-		FunctionType * funcType = GenPoly::getFunctionType( function->get_var()->get_type() );
-		assert( funcType );
-		return function->get_var()->get_linkage() == LinkageSpec::Intrinsic && funcType->get_parameters().size() == 1;
+		if ( ApplicationExpr * appExpr = isIntrinsicCallExpr( callExpr ) ) {
+			assert( ! appExpr->get_function()->get_results().empty() );
+			FunctionType *funcType = GenPoly::getFunctionType( appExpr->get_function()->get_results().front() );
+			assert( funcType );
+			return funcType->get_parameters().size() == 1;
+		}
+		return false;
 	}
 
Index: src/InitTweak/InitTweak.h
===================================================================
--- src/InitTweak/InitTweak.h	(revision 72e9222a9026d1f801ca6ee36c7a5b77604f5304)
+++ src/InitTweak/InitTweak.h	(revision aedfd91633ca1585181a0ce220879ca2041ede7c)
@@ -35,4 +35,7 @@
 	bool isDesignated( Initializer * init );
 
+  /// Non-Null if expr is a call expression whose target function is intrinsic
+  ApplicationExpr * isIntrinsicCallExpr( Expression * expr );
+
 	/// True if stmt is a call statement where the function called is intrinsic and takes one parameter.
 	/// Intended to be used for default ctor/dtor calls, but might have use elsewhere.
