diff options
author | Reid Kleckner <reid@kleckner.net> | 2014-09-23 00:00:14 +0000 |
---|---|---|
committer | Reid Kleckner <reid@kleckner.net> | 2014-09-23 00:00:14 +0000 |
commit | 6c03130542028ada57b8a2872657be4252a65fa0 (patch) | |
tree | 51eb91ddc906cbbd15adff8c9a0278ccb8041933 /clang/test/CodeGenCXX/static-data-member.cpp | |
parent | 0f79772ecccd3340c84b45f00144c7a5d5395cc8 (diff) | |
download | bcm5719-llvm-6c03130542028ada57b8a2872657be4252a65fa0.tar.gz bcm5719-llvm-6c03130542028ada57b8a2872657be4252a65fa0.zip |
Don't use comdats for initializers on platforms that don't support it
In particular, pre-.init_array ELF uses the .ctors section mechanism.
MinGW COFF also uses .ctors, now that I think about it. Therefore,
restrict this optimization to the two platforms that are currently known
to work: ELF with .init_array and COFF with .CRT$XCU.
llvm-svn: 218287
Diffstat (limited to 'clang/test/CodeGenCXX/static-data-member.cpp')
-rw-r--r-- | clang/test/CodeGenCXX/static-data-member.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/clang/test/CodeGenCXX/static-data-member.cpp b/clang/test/CodeGenCXX/static-data-member.cpp index 5ec3755b403..f42d1ec47dd 100644 --- a/clang/test/CodeGenCXX/static-data-member.cpp +++ b/clang/test/CodeGenCXX/static-data-member.cpp @@ -1,6 +1,8 @@ -// RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -o - %s | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -fuse-init-array -o - %s | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -o - %s | \ +// RUN: FileCheck %s --check-prefix=CTORS // RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s | \ -// RUN: FileCheck --check-prefix=MACHO %s +// RUN: FileCheck --check-prefix=MACHO %s // CHECK: @_ZN5test11A1aE = constant i32 10, align 4 // CHECK: @_ZN5test212_GLOBAL__N_11AIiE1xE = internal global i32 0, align 4 @@ -8,6 +10,8 @@ // CHECK: @_ZGVN5test31AIiE1xE = weak_odr global i64 0, comdat $_ZN5test31AIiE1xE // MACHO: @_ZGVN5test31AIiE1xE = weak_odr global i64 0 // MACHO-NOT: comdat +// CTORS: @_ZGVN5test31AIiE1xE = weak_odr global i64 0 +// CTORS-NOT: comdat // CHECK: _ZN5test51U2k0E = global i32 0 // CHECK: _ZN5test51U2k1E = global i32 0 @@ -67,6 +71,8 @@ namespace test3 { // CHECK-LABEL: define internal void @__cxx_global_var_init1() {{.*}} comdat $_ZN5test31AIiE1xE // MACHO-LABEL: define internal void @__cxx_global_var_init1() // MACHO-NOT: comdat + // CTORS-LABEL: define internal void @__cxx_global_var_init1() + // CTORS-NOT: comdat // CHECK: [[GUARDBYTE:%.*]] = load i8* bitcast (i64* @_ZGVN5test31AIiE1xE to i8*) // CHECK-NEXT: [[UNINITIALIZED:%.*]] = icmp eq i8 [[GUARDBYTE]], 0 // CHECK-NEXT: br i1 [[UNINITIALIZED]] |