diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/CodeGenCXX/attr.cpp | 3 | ||||
-rw-r--r-- | clang/test/CodeGenCXX/default-destructor-synthesis.cpp | 9 | ||||
-rw-r--r-- | clang/test/CodeGenCXX/deferred-global-init.cpp | 16 | ||||
-rw-r--r-- | clang/test/CodeGenCXX/vtable-linkage.cpp | 12 |
4 files changed, 29 insertions, 11 deletions
diff --git a/clang/test/CodeGenCXX/attr.cpp b/clang/test/CodeGenCXX/attr.cpp index 8fd86414862..1b214b77bee 100644 --- a/clang/test/CodeGenCXX/attr.cpp +++ b/clang/test/CodeGenCXX/attr.cpp @@ -15,6 +15,9 @@ class C { virtual void bar3() __attribute__((aligned(1024))); } c; +// CHECK:.align 1, 0x90 +// CHECK-NEXT:.globl __ZN1CC1Ev + void C::bar1() { } // CHECK:.align 1, 0x90 diff --git a/clang/test/CodeGenCXX/default-destructor-synthesis.cpp b/clang/test/CodeGenCXX/default-destructor-synthesis.cpp index 098458d35d5..71167a204fb 100644 --- a/clang/test/CodeGenCXX/default-destructor-synthesis.cpp +++ b/clang/test/CodeGenCXX/default-destructor-synthesis.cpp @@ -45,15 +45,14 @@ M gm; int main() {M m1;} -// CHECK-LP64: callq __ZN1MC1Ev -// CHECK-LP64: callq __ZN1MD1Ev // CHECK-LP64: .globl __ZN1MD1Ev // CHECK-LP64-NEXT: .weak_definition __ZN1MD1Ev // CHECK-LP64-NEXT: __ZN1MD1Ev: +// CHECK-LP64: callq __ZN1MC1Ev +// CHECK-LP64: callq __ZN1MD1Ev - -// CHECK-LP32: call L__ZN1MC1Ev -// CHECK-LP32: call L__ZN1MD1Ev // CHECK-LP32: .globl __ZN1MD1Ev // CHECK-LP32-NEXT: .weak_definition __ZN1MD1Ev // CHECK-LP32-NEXT:__ZN1MD1Ev: +// CHECK-LP32: call L__ZN1MC1Ev +// CHECK-LP32: call L__ZN1MD1Ev diff --git a/clang/test/CodeGenCXX/deferred-global-init.cpp b/clang/test/CodeGenCXX/deferred-global-init.cpp new file mode 100644 index 00000000000..57014790554 --- /dev/null +++ b/clang/test/CodeGenCXX/deferred-global-init.cpp @@ -0,0 +1,16 @@ +// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s +// PR5967 + +extern void* foo; +static void* const a = foo; +void* bar() { return a; } + +// CHECK: @a = internal global i8* null + +// CHECK: define internal void @__cxx_global_var_init +// CHECK: load i8** @foo +// CHECK: ret void + +// CHECK: define internal void @__cxx_global_initialization +// CHECK: call void @__cxx_global_var_init() +// CHECK: ret void diff --git a/clang/test/CodeGenCXX/vtable-linkage.cpp b/clang/test/CodeGenCXX/vtable-linkage.cpp index 733a9f0be53..63e17431c46 100644 --- a/clang/test/CodeGenCXX/vtable-linkage.cpp +++ b/clang/test/CodeGenCXX/vtable-linkage.cpp @@ -121,12 +121,6 @@ void use_F(F<char> &fc) { // CHECK: @_ZTI1EIlE = weak_odr constant // CHECK: @_ZTV1EIlE = weak_odr constant -// The anonymous struct for e has no linkage, so the vtable should have -// internal linkage. -// CHECK: @"_ZTS3$_0" = internal constant -// CHECK: @"_ZTI3$_0" = internal constant -// CHECK: @"_ZTV3$_0" = internal constant - // F<long> is an implicit template instantiation with no key function, // so its vtable should have weak_odr linkage. // CHECK: @_ZTS1FIlE = weak_odr constant @@ -144,6 +138,12 @@ void use_F(F<char> &fc) { // its vtable, not define it. // CHECK: @_ZTV1EIiE = external constant +// The anonymous struct for e has no linkage, so the vtable should have +// internal linkage. +// CHECK: @"_ZTS3$_0" = internal constant +// CHECK: @"_ZTI3$_0" = internal constant +// CHECK: @"_ZTV3$_0" = internal constant + // The A vtable should have internal linkage since it is inside an anonymous // namespace. // CHECK: @_ZTSN12_GLOBAL__N_11AE = internal constant |