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