diff options
Diffstat (limited to 'clang/test/CodeGen')
-rw-r--r-- | clang/test/CodeGen/dso-local-executable.c | 59 | ||||
-rw-r--r-- | clang/test/CodeGen/mbackchain-2.c | 2 | ||||
-rw-r--r-- | clang/test/CodeGen/mbackchain-3.c | 2 | ||||
-rw-r--r-- | clang/test/CodeGen/mips-vector-return.c | 6 | ||||
-rw-r--r-- | clang/test/CodeGen/split-stacks.c | 10 |
5 files changed, 69 insertions, 10 deletions
diff --git a/clang/test/CodeGen/dso-local-executable.c b/clang/test/CodeGen/dso-local-executable.c new file mode 100644 index 00000000000..5637ae4127f --- /dev/null +++ b/clang/test/CodeGen/dso-local-executable.c @@ -0,0 +1,59 @@ +// RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -mrelocation-model static %s -o - | FileCheck --check-prefix=STATIC %s +// STATIC-DAG: @bar = external dso_local global i32 +// STATIC-DAG: @weak_bar = extern_weak dso_local global i32 +// STATIC-DAG: declare dso_local void @foo() +// STATIC-DAG: @baz = dso_local global i32 42 +// STATIC-DAG: define dso_local i32* @zed() + +// RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -pic-is-pie -mpie-copy-relocations %s -o - | FileCheck --check-prefix=PIE-COPY %s +// PIE-COPY-DAG: @bar = external dso_local global i32 +// PIE-COPY-DAG: @weak_bar = extern_weak global i32 +// PIE-COPY-DAG: declare void @foo() +// PIE-COPY-DAG: @baz = dso_local global i32 42 +// PIE-COPY-DAG: define dso_local i32* @zed() + +// RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -pic-is-pie %s -o - | FileCheck --check-prefix=PIE %s +// PIE-DAG: @bar = external global i32 +// PIE-DAG: @weak_bar = extern_weak global i32 +// PIE-DAG: declare void @foo() +// PIE-DAG: @baz = dso_local global i32 42 +// PIE-DAG: define dso_local i32* @zed() + +// RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -mrelocation-model static -fno-plt %s -o - | FileCheck --check-prefix=NOPLT %s +// NOPLT-DAG: @bar = external dso_local global i32 +// NOPLT-DAG: @weak_bar = extern_weak dso_local global i32 +// NOPLT-DAG: declare void @foo() +// NOPLT-DAG: @baz = dso_local global i32 42 +// NOPLT-DAG: define dso_local i32* @zed() + +// RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -fno-plt -pic-is-pie -mpie-copy-relocations %s -o - | FileCheck --check-prefix=PIE-COPY-NOPLT %s +// PIE-COPY-NOPLT-DAG: @bar = external dso_local global i32 +// PIE-COPY-NOPLT-DAG: @weak_bar = extern_weak global i32 +// PIE-COPY-NOPLT-DAG: declare void @foo() +// PIE-COPY-NOPLT-DAG: @baz = dso_local global i32 42 +// PIE-COPY-NOPLT-DAG: define dso_local i32* @zed() + +// RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -pic-is-pie -fno-plt %s -o - | FileCheck --check-prefix=PIE-NO-PLT %s +// RUN: %clang_cc1 -triple powerpc64le-pc-linux -emit-llvm -mrelocation-model static %s -o - | FileCheck --check-prefix=PIE-NO-PLT %s +// PIE-NO-PLT-DAG: @bar = external global i32 +// PIE-NO-PLT-DAG: @weak_bar = extern_weak global i32 +// PIE-NO-PLT-DAG: declare void @foo() +// PIE-NO-PLT-DAG: @baz = dso_local global i32 42 +// PIE-NO-PLT-DAG: define dso_local i32* @zed() + +// RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm %s -o - | FileCheck --check-prefix=SHARED %s +// SHARED-DAG: @bar = external global i32 +// SHARED-DAG: @weak_bar = extern_weak global i32 +// SHARED-DAG: declare void @foo() +// SHARED-DAG: @baz = global i32 42 +// SHARED-DAG: define i32* @zed() + +extern int bar; +__attribute__((weak)) extern int weak_bar; +void foo(void); + +int baz = 42; +int *zed() { + foo(); + return baz ? &weak_bar : &bar; +} diff --git a/clang/test/CodeGen/mbackchain-2.c b/clang/test/CodeGen/mbackchain-2.c index e76afaf7687..bea46d24826 100644 --- a/clang/test/CodeGen/mbackchain-2.c +++ b/clang/test/CodeGen/mbackchain-2.c @@ -1,6 +1,6 @@ // RUN: %clang -mbackchain --target=s390x-linux -S -emit-llvm -o - %s | FileCheck %s -// CHECK: define void @foo() [[NUW:#[0-9]+]] +// CHECK: define dso_local void @foo() [[NUW:#[0-9]+]] void foo(void) { } diff --git a/clang/test/CodeGen/mbackchain-3.c b/clang/test/CodeGen/mbackchain-3.c index b115861f5e0..5ff0e167610 100644 --- a/clang/test/CodeGen/mbackchain-3.c +++ b/clang/test/CodeGen/mbackchain-3.c @@ -1,6 +1,6 @@ // RUN: %clang -mno-backchain --target=s390x-linux -S -emit-llvm -o - %s | FileCheck %s -// CHECK: define void @foo() [[NUW:#[0-9]+]] +// CHECK: define dso_local void @foo() [[NUW:#[0-9]+]] void foo(void) { } diff --git a/clang/test/CodeGen/mips-vector-return.c b/clang/test/CodeGen/mips-vector-return.c index 8af4998cdf7..dd3c400c019 100644 --- a/clang/test/CodeGen/mips-vector-return.c +++ b/clang/test/CodeGen/mips-vector-return.c @@ -8,13 +8,13 @@ typedef float v4sf __attribute__ ((__vector_size__ (16))); typedef double v4df __attribute__ ((__vector_size__ (32))); typedef int v4i32 __attribute__ ((__vector_size__ (16))); -// O32-LABEL: define void @test_v4sf(<4 x float>* noalias nocapture sret +// O32-LABEL: define dso_local void @test_v4sf(<4 x float>* noalias nocapture sret // N64: define inreg { i64, i64 } @test_v4sf v4sf test_v4sf(float a) { return (v4sf){0.0f, a, 0.0f, 0.0f}; } -// O32-LABEL: define void @test_v4df(<4 x double>* noalias nocapture sret +// O32-LABEL: define dso_local void @test_v4df(<4 x double>* noalias nocapture sret // N64-LABEL: define void @test_v4df(<4 x double>* noalias nocapture sret v4df test_v4df(double a) { return (v4df){0.0, a, 0.0, 0.0}; @@ -23,7 +23,7 @@ v4df test_v4df(double a) { // O32 returns integer vectors whose size is equal to or smaller than 16-bytes // in integer registers. // -// O32: define inreg { i32, i32, i32, i32 } @test_v4i32 +// O32: define dso_local inreg { i32, i32, i32, i32 } @test_v4i32 // N64: define inreg { i64, i64 } @test_v4i32 v4i32 test_v4i32(int a) { return (v4i32){0, a, 0, 0}; diff --git a/clang/test/CodeGen/split-stacks.c b/clang/test/CodeGen/split-stacks.c index bf4cf0f026a..d9ff1f955d2 100644 --- a/clang/test/CodeGen/split-stacks.c +++ b/clang/test/CodeGen/split-stacks.c @@ -14,13 +14,13 @@ int main() { return foo(); } -// CHECK-SEGSTK: define i32 @foo() [[SS:#[0-9]+]] { -// CHECK-SEGSTK: define i32 @nosplit() [[NSS:#[0-9]+]] { -// CHECK-SEGSTK: define i32 @main() [[SS]] { +// CHECK-SEGSTK: define dso_local i32 @foo() [[SS:#[0-9]+]] { +// CHECK-SEGSTK: define dso_local i32 @nosplit() [[NSS:#[0-9]+]] { +// CHECK-SEGSTK: define dso_local i32 @main() [[SS]] { // CHECK-SEGSTK-NOT: [[NSS]] = { {{.*}} "split-stack" {{.*}} } // CHECK-SEGSTK: [[SS]] = { {{.*}} "split-stack" {{.*}} } // CHECK-SEGSTK-NOT: [[NSS]] = { {{.*}} "split-stack" {{.*}} } -// CHECK-NOSEGSTK: define i32 @foo() #0 { -// CHECK-NOSEGSTK: define i32 @main() #0 { +// CHECK-NOSEGSTK: define dso_local i32 @foo() #0 { +// CHECK-NOSEGSTK: define dso_local i32 @main() #0 { // CHECK-NOSEGSTK-NOT: #0 = { {{.*}} "split-stack" {{.*}} } |