Index: src/InitTweak/FixInit.cc
===================================================================
--- src/InitTweak/FixInit.cc	(revision d5916ce34e5508e6ffe903e16992dee102292838)
+++ src/InitTweak/FixInit.cc	(revision b54ad9c66788ec2930ca0cac1989ef26b86a2708)
@@ -1123,9 +1123,9 @@
 							if ( isCtor ) {
 								function->statements->push_front( callStmt );
-							} else {
+							} else { // TODO: don't generate destructor function/object for intrinsic calls
 								// destructor statements should be added at the end
 								// function->get_statements()->push_back( callStmt );
 
-								// Destructor _dtor0 = { &b.a1, (void (*)(void *)_destroy_A };
+								// __Destructor _dtor0 = { (void *)&b.a1, (void (*)(void *)_destroy_A };
 								std::list< Statement * > stmtsToAdd;
 
@@ -1134,5 +1134,5 @@
 								assertf( dtorStructDestroy, "builtin __destroy_Destructor not found." );
 
-								Expression * thisExpr = new AddressExpr( new VariableExpr( thisParam ) );
+								Expression * thisExpr = new CastExpr( new AddressExpr( new VariableExpr( thisParam ) ), new PointerType( Type::Qualifiers(), new VoidType( Type::Qualifiers() ) ) );
 								Expression * dtorExpr = new VariableExpr( getDtorFunc( thisParam, callStmt, stmtsToAdd ) );
 
