diff options
| author | Scott Linder <scott@scottlinder.com> | 2019-01-28 17:12:19 +0000 |
|---|---|---|
| committer | Scott Linder <scott@scottlinder.com> | 2019-01-28 17:12:19 +0000 |
| commit | bef2663751fd1f9ad12ddcbea2da87f47f1f42c7 (patch) | |
| tree | 182f1d59e8b9f1a4e49d94a835c39169c7d1034a /clang/test | |
| parent | 23019f946d413a4a22351c7e96ce84872ac17560 (diff) | |
| download | bcm5719-llvm-bef2663751fd1f9ad12ddcbea2da87f47f1f42c7.tar.gz bcm5719-llvm-bef2663751fd1f9ad12ddcbea2da87f47f1f42c7.zip | |
Add -fapply-global-visibility-to-externs for -cc1
Introduce an option to request global visibility settings be applied to
declarations without a definition or an explicit visibility, rather than
the existing behavior of giving these default visibility. When the
visibility of all or most extern definitions are known this allows for
the same optimisations -fvisibility permits without updating source code
to annotate all declarations.
Differential Revision: https://reviews.llvm.org/D56868
llvm-svn: 352391
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/CodeGen/set-visibility-for-decls.c | 42 | ||||
| -rw-r--r-- | clang/test/Driver/amdgpu-visibility.cl | 12 | ||||
| -rw-r--r-- | clang/test/Driver/hip-toolchain-no-rdc.hip | 4 | ||||
| -rw-r--r-- | clang/test/Driver/hip-toolchain-rdc.hip | 4 |
4 files changed, 59 insertions, 3 deletions
diff --git a/clang/test/CodeGen/set-visibility-for-decls.c b/clang/test/CodeGen/set-visibility-for-decls.c new file mode 100644 index 00000000000..04232f87151 --- /dev/null +++ b/clang/test/CodeGen/set-visibility-for-decls.c @@ -0,0 +1,42 @@ +// RUN: %clang_cc1 %s -std=c11 -triple=x86_64-pc-linux -fvisibility hidden -fapply-global-visibility-to-externs -emit-llvm -o - | FileCheck --check-prefix=CHECK-HIDDEN %s +// RUN: %clang_cc1 %s -std=c11 -triple=x86_64-pc-linux -fvisibility protected -fapply-global-visibility-to-externs -emit-llvm -o - | FileCheck --check-prefix=CHECK-PROTECTED %s +// RUN: %clang_cc1 %s -std=c11 -triple=x86_64-pc-linux -fvisibility default -fapply-global-visibility-to-externs -emit-llvm -o - | FileCheck --check-prefix=CHECK-DEFAULT %s + +// CHECK-HIDDEN: @var_hidden = external hidden global +// CHECK-PROTECTED: @var_hidden = external hidden global +// CHECK-DEFAULT: @var_hidden = external hidden global +__attribute__((visibility("hidden"))) extern int var_hidden; +// CHECK-HIDDEN: @var_protected = external protected global +// CHECK-PROTECTED: @var_protected = external protected global +// CHECK-DEFAULT: @var_protected = external protected global +__attribute__((visibility("protected"))) extern int var_protected; +// CHECK-HIDDEN: @var_default = external global +// CHECK-PROTECTED: @var_default = external global +// CHECK-DEFAULT: @var_default = external global +__attribute__((visibility("default"))) extern int var_default; +// CHECK-HIDDEN: @var = external hidden global +// CHECK-PROTECTED: @var = external protected global +// CHECK-DEFAULT: @var = external global +extern int var; + +// CHECK-HIDDEN: declare hidden i32 @func_hidden() +// CHECK-PROTECTED: declare hidden i32 @func_hidden() +// CHECK-DEFAULT: declare hidden i32 @func_hidden() +__attribute__((visibility("hidden"))) int func_hidden(void); +// CHECK-HIDDEN: declare protected i32 @func_protected() +// CHECK-PROTECTED: declare protected i32 @func_protected() +// CHECK-DEFAULT: declare protected i32 @func_protected() +__attribute__((visibility("protected"))) int func_protected(void); +// CHECK-HIDDEN: declare i32 @func_default() +// CHECK-PROTECTED: declare i32 @func_default() +// CHECK-DEFAULT: declare i32 @func_default() +__attribute__((visibility("default"))) int func_default(void); +// CHECK-HIDDEN: declare hidden i32 @func() +// CHECK-PROTECTED: declare protected i32 @func() +// CHECK-DEFAULT: declare i32 @func() +int func(void); + +int use() { + return var_hidden + var_protected + var_default + var + + func_hidden() + func_protected() + func_default() + func(); +} diff --git a/clang/test/Driver/amdgpu-visibility.cl b/clang/test/Driver/amdgpu-visibility.cl index 35969db0340..19756d4744e 100644 --- a/clang/test/Driver/amdgpu-visibility.cl +++ b/clang/test/Driver/amdgpu-visibility.cl @@ -2,6 +2,14 @@ // RUN: %clang -### -target amdgcn-amd-amdhsa -x cl -c -emit-llvm -fvisibility=protected %s 2>&1 | FileCheck -check-prefix=OVERRIDE-PROTECTED %s // RUN: %clang -### -target amdgcn-amd-amdhsa -x cl -c -emit-llvm -fvisibility-ms-compat %s 2>&1 | FileCheck -check-prefix=OVERRIDE-MS %s -// DEFAULT: "-fvisibility" "hidden" +// DEFAULT-DAG: "-fvisibility" "hidden" +// DEFAULT-DAG: "-fapply-global-visibility-to-externs" + +// OVERRIDE-PROTECTED-NOT: "-fapply-global-visibility-to-externs" // OVERRIDE-PROTECTED: "-fvisibility" "protected" -// OVERRIDE-MS: "-fvisibility" "hidden" "-ftype-visibility" "default" +// OVERRIDE-PROTECTED-NOT: "-fapply-global-visibility-to-externs" + +// OVERRIDE-MS-NOT: "-fapply-global-visibility-to-externs" +// OVERRIDE-MS-DAG: "-fvisibility" "hidden" +// OVERRIDE-MS-DAG: "-ftype-visibility" "default" +// OVERRIDE-MS-NOT: "-fapply-global-visibility-to-externs" diff --git a/clang/test/Driver/hip-toolchain-no-rdc.hip b/clang/test/Driver/hip-toolchain-no-rdc.hip index 4f31a39a72b..e8e491858f7 100644 --- a/clang/test/Driver/hip-toolchain-no-rdc.hip +++ b/clang/test/Driver/hip-toolchain-no-rdc.hip @@ -20,6 +20,7 @@ // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" "-emit-llvm-bc" // CHECK-SAME: {{.*}} "-main-file-name" "a.cu" {{.*}} "-target-cpu" "gfx803" // CHECK-SAME: "-fcuda-is-device" "-fvisibility" "hidden" +// CHECK-SAME: "-fapply-global-visibility-to-externs" // CHECK-SAME: {{.*}} "-o" [[A_BC_803:".*bc"]] "-x" "hip" // CHECK-SAME: {{.*}} [[A_SRC:".*a.cu"]] @@ -47,6 +48,7 @@ // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" "-emit-llvm-bc" // CHECK-SAME: {{.*}} "-main-file-name" "a.cu" {{.*}} "-target-cpu" "gfx900" // CHECK-SAME: "-fcuda-is-device" "-fvisibility" "hidden" +// CHECK-SAME: "-fapply-global-visibility-to-externs" // CHECK-SAME: {{.*}} "-o" [[A_BC_900:".*bc"]] "-x" "hip" // CHECK-SAME: {{.*}} [[A_SRC]] @@ -89,6 +91,7 @@ // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" "-emit-llvm-bc" // CHECK-SAME: {{.*}} "-main-file-name" "b.hip" {{.*}} "-target-cpu" "gfx803" // CHECK-SAME: "-fcuda-is-device" "-fvisibility" "hidden" +// CHECK-SAME: "-fapply-global-visibility-to-externs" // CHECK-SAME: {{.*}} "-o" [[B_BC_803:".*bc"]] "-x" "hip" // CHECK-SAME: {{.*}} [[B_SRC:".*b.hip"]] @@ -116,6 +119,7 @@ // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" "-emit-llvm-bc" // CHECK-SAME: {{.*}} "-main-file-name" "b.hip" {{.*}} "-target-cpu" "gfx900" // CHECK-SAME: "-fcuda-is-device" "-fvisibility" "hidden" +// CHECK-SAME: "-fapply-global-visibility-to-externs" // CHECK-SAME: {{.*}} "-o" [[B_BC_900:".*bc"]] "-x" "hip" // CHECK-SAME: {{.*}} [[B_SRC]] diff --git a/clang/test/Driver/hip-toolchain-rdc.hip b/clang/test/Driver/hip-toolchain-rdc.hip index 5f3fd9250b6..dc6fc6f6518 100644 --- a/clang/test/Driver/hip-toolchain-rdc.hip +++ b/clang/test/Driver/hip-toolchain-rdc.hip @@ -12,10 +12,11 @@ // RUN: %S/Inputs/hip_multiple_inputs/b.hip \ // RUN: 2>&1 | FileCheck %s -// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa" +// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa" // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" "-emit-llvm-bc" // CHECK-SAME: {{.*}} "-main-file-name" "a.cu" {{.*}} "-target-cpu" "gfx803" // CHECK-SAME: "-fcuda-is-device" "-fgpu-rdc" "-fvisibility" "hidden" +// CHECK-SAME: "-fapply-global-visibility-to-externs" // CHECK-SAME: {{.*}} "-o" [[A_BC:".*bc"]] "-x" "hip" // CHECK-SAME: {{.*}} [[A_SRC:".*a.cu"]] @@ -23,6 +24,7 @@ // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" "-emit-llvm-bc" // CHECK-SAME: {{.*}} "-main-file-name" "b.hip" {{.*}} "-target-cpu" "gfx803" // CHECK-SAME: "-fcuda-is-device" "-fgpu-rdc" "-fvisibility" "hidden" +// CHECK-SAME: "-fapply-global-visibility-to-externs" // CHECK-SAME: {{.*}} "-o" [[B_BC:".*bc"]] "-x" "hip" // CHECK-SAME: {{.*}} [[B_SRC:".*b.hip"]] |

