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