1eefb6abc7699722024d757d7be96498ed4df16edDaniel Dunbar// RUN: %clangxx -ccc-host-triple x86_64-apple-darwin10 %s -flto -S -o - |\ 222d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar// RUN: FileCheck --check-prefix=CHECK-NO-KEXT %s 3eefb6abc7699722024d757d7be96498ed4df16edDaniel Dunbar// RUN: %clangxx -ccc-host-triple x86_64-apple-darwin10 %s -fapple-kext -flto -S -o - |\ 422d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar// RUN: FileCheck --check-prefix=CHECK-KEXT %s 522d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar 622d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar// CHECK-NO-KEXT-NOT: _GLOBAL__D_a 722d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar// CHECK-NO-KEXT: @is_hosted = global 8a78927d6476067d6c7a68d6bc21c93d66f265594Douglas Gregor// CHECK-NO-KEXT: @_ZTI3foo = {{.*}} @_ZTVN10__cxxabiv117 922d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar// CHECK-NO-KEXT: call i32 @__cxa_atexit({{.*}} @_ZN3fooD1Ev 1022d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar// CHECK-NO-KEXT: declare i32 @__cxa_atexit 1122d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar 1222d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar// CHECK-KEXT: @_ZTV3foo = 1322d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar// CHECK-KEXT-NOT: @_ZTVN10__cxxabiv117 1422d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar// CHECK-KEXT-NOT: call i32 @__cxa_atexit({{.*}} @_ZN3fooD1Ev 1522d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar// CHECK-KEXT-NOT: declare i32 @__cxa_atexit 1622d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar// CHECK-KEXT: @is_freestanding = global 1722d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar// CHECK-KEXT: _GLOBAL__D_a 1822d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar// CHECK-KEXT: call void @_ZN3fooD1Ev(%class.foo* @a) 1922d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar 2022d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbarclass foo { 2122d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbarpublic: 2222d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar foo(); 2322d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar virtual ~foo(); 2422d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar}; 2522d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar 2622d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbarfoo a; 2722d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbarfoo::~foo() {} 2822d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar 2922d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar#if !(__STDC_HOSTED__ == 1) 3022d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbarint is_freestanding = 1; 3122d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar#else 3222d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbarint is_hosted = 1; 3322d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar#endif 3422d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar 3522d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbarextern "C" void f1() { 3622d99092e6c2d7c23fa2b1d93dd15ebab3792624Daniel Dunbar} 37