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