Index: src/InitTweak/FixInit.cc
===================================================================
--- src/InitTweak/FixInit.cc	(revision 14a33790123fdbf7f1d2d6486abc2cb902f0f91f)
+++ src/InitTweak/FixInit.cc	(revision 142cf5d5bc4083f9bfbdb71d2ae41cf1ec930d79)
@@ -764,8 +764,17 @@
 						}
 					} else {
-						stmtsToAddAfter.push_back( ctor );
+						ImplicitCtorDtorStmt * implicit = safe_dynamic_cast< ImplicitCtorDtorStmt * > ( ctor );
+						ExprStmt * ctorStmt = dynamic_cast< ExprStmt * >( implicit->get_callStmt() );
+						ApplicationExpr * ctorCall = nullptr;
+						if ( ctorStmt && (ctorCall = isIntrinsicCallExpr( ctorStmt->get_expr() )) && ctorCall->get_args().size() == 2 ) {
+							// clean up intrinsic copy constructor calls by making them into SingleInits
+							objDecl->set_init( new SingleInit( ctorCall->get_args().back() ) );
+							ctorCall->get_args().pop_back();
+						} else {
+							stmtsToAddAfter.push_back( ctor );
+							objDecl->set_init( NULL );
+							ctorInit->set_ctor( NULL );
+						}
 					} // if
-					objDecl->set_init( NULL );
-					ctorInit->set_ctor( NULL );
 				} else if ( Initializer * init = ctorInit->get_init() ) {
 					objDecl->set_init( init );
