1651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: %clang_cc1 %s -triple %itanium_abi_triple -emit-llvm -o - -fblocks 2651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: %clang_cc1 %s -triple %ms_abi_triple -fno-rtti -emit-llvm -o - -fblocks 39595dae5f78cd1762d8f0076887821be65f7e5a6David Chisnall// Just test that this doesn't crash the compiler... 49595dae5f78cd1762d8f0076887821be65f7e5a6David Chisnall 59595dae5f78cd1762d8f0076887821be65f7e5a6David Chisnallvoid func(void*); 69595dae5f78cd1762d8f0076887821be65f7e5a6David Chisnall 79595dae5f78cd1762d8f0076887821be65f7e5a6David Chisnallstruct Test 89595dae5f78cd1762d8f0076887821be65f7e5a6David Chisnall{ 99595dae5f78cd1762d8f0076887821be65f7e5a6David Chisnall virtual void use() { func((void*)this); } 109595dae5f78cd1762d8f0076887821be65f7e5a6David Chisnall Test(Test&c) { func((void*)this); } 119595dae5f78cd1762d8f0076887821be65f7e5a6David Chisnall Test() { func((void*)this); } 129595dae5f78cd1762d8f0076887821be65f7e5a6David Chisnall}; 139595dae5f78cd1762d8f0076887821be65f7e5a6David Chisnall 149595dae5f78cd1762d8f0076887821be65f7e5a6David Chisnallvoid useBlock(void (^)(void)); 159595dae5f78cd1762d8f0076887821be65f7e5a6David Chisnall 169595dae5f78cd1762d8f0076887821be65f7e5a6David Chisnallint main (void) { 179595dae5f78cd1762d8f0076887821be65f7e5a6David Chisnall __block Test t; 189595dae5f78cd1762d8f0076887821be65f7e5a6David Chisnall useBlock(^(void) { t.use(); }); 199595dae5f78cd1762d8f0076887821be65f7e5a6David Chisnall} 209595dae5f78cd1762d8f0076887821be65f7e5a6David Chisnall 21