forked from OSchip/llvm-project
Fix a trivial oversight with apple-kext static local destructors
and add a test case. llvm-svn: 154653
This commit is contained in:
parent
f958f348c8
commit
32233a7c1a
|
@ -244,6 +244,7 @@ void CodeGenFunction::EmitCXXGlobalDtorRegistration(llvm::Constant *dtor,
|
|||
if (CGM.getContext().getLangOpts().AppleKext) {
|
||||
// Generate a global destructor entry.
|
||||
CGM.AddCXXDtorEntry(dtor, addr);
|
||||
return;
|
||||
}
|
||||
|
||||
// Otherwise, we just use atexit.
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fno-use-cxa-atexit -fapple-kext -emit-llvm -o - %s | FileCheck %s
|
||||
|
||||
// CHECK: @_ZN5test01aE = global [[A:%.*]] zeroinitializer
|
||||
// CHECK: @llvm.global_ctors = appending global {{.*}} { i32 65535, void ()* [[CTOR0:@.*]] }
|
||||
// CHECK: @llvm.global_dtors = appending global {{.*}} { i32 65535, void ()* [[DTOR0:@.*]] }
|
||||
|
||||
// rdar://11241230
|
||||
namespace test0 {
|
||||
struct A { A(); ~A(); };
|
||||
A a;
|
||||
}
|
||||
// CHECK: define internal void [[CTOR0_:@.*]]()
|
||||
// CHECK: call void @_ZN5test01AC1Ev([[A]]* @_ZN5test01aE)
|
||||
// CHECK-NEXT: ret void
|
||||
|
||||
// CHECK: define internal void [[CTOR0]]()
|
||||
// CHECK: call void [[CTOR0_]]()
|
||||
// CHECK-NEXT: ret void
|
||||
|
||||
// CHECK: define internal void [[DTOR0]]()
|
||||
// CHECK: call void @_ZN5test01AD1Ev([[A]]* @_ZN5test01aE)
|
||||
// CHECK-NEXT: ret void
|
Loading…
Reference in New Issue