diff options
| author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2018-08-30 08:18:06 +0000 |
|---|---|---|
| committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2018-08-30 08:18:06 +0000 |
| commit | cd5bc7be0849a2b3a2452c587613a89301c2e20a (patch) | |
| tree | 61cd3c8da73d9cdd5a2e3b27d92bda6f3e4011c7 /clang | |
| parent | d859668c762b8744a075dd086cb45aa4befb81b0 (diff) | |
| download | bcm5719-llvm-cd5bc7be0849a2b3a2452c587613a89301c2e20a.tar.gz bcm5719-llvm-cd5bc7be0849a2b3a2452c587613a89301c2e20a.zip | |
AMDGPU: Default to hidden visibility
Object linking isn't supported, so it's not useful
to emit default visibility. Default visibility requires
relocations we don't yet support for functions compiled
in another translation unit.
WebAssembly already does this, although they insert these
arguments in a different place for some reason.
llvm-svn: 341033
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Driver/ToolChains/AMDGPU.cpp | 13 | ||||
| -rw-r--r-- | clang/lib/Driver/ToolChains/AMDGPU.h | 4 | ||||
| -rw-r--r-- | clang/test/Driver/amdgpu-visibility.cl | 7 |
3 files changed, 24 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp index 6b673feeadf..451f31dd527 100644 --- a/clang/lib/Driver/ToolChains/AMDGPU.cpp +++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp @@ -98,3 +98,16 @@ AMDGPUToolChain::TranslateArgs(const DerivedArgList &Args, StringRef BoundArch, return DAL; } + +void AMDGPUToolChain::addClangTargetOptions( + const llvm::opt::ArgList &DriverArgs, + llvm::opt::ArgStringList &CC1Args, + Action::OffloadKind DeviceOffloadingKind) const { + // Default to "hidden" visibility, as object level linking will not be + // supported for the forseeable future. + if (!DriverArgs.hasArg(options::OPT_fvisibility_EQ, + options::OPT_fvisibility_ms_compat)) { + CC1Args.push_back("-fvisibility"); + CC1Args.push_back("hidden"); + } +} diff --git a/clang/lib/Driver/ToolChains/AMDGPU.h b/clang/lib/Driver/ToolChains/AMDGPU.h index 36114d0dabc..9d38eeedf59 100644 --- a/clang/lib/Driver/ToolChains/AMDGPU.h +++ b/clang/lib/Driver/ToolChains/AMDGPU.h @@ -61,6 +61,10 @@ public: llvm::opt::DerivedArgList * TranslateArgs(const llvm::opt::DerivedArgList &Args, StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; + + void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, + llvm::opt::ArgStringList &CC1Args, + Action::OffloadKind DeviceOffloadKind) const override; }; } // end namespace toolchains diff --git a/clang/test/Driver/amdgpu-visibility.cl b/clang/test/Driver/amdgpu-visibility.cl new file mode 100644 index 00000000000..35969db0340 --- /dev/null +++ b/clang/test/Driver/amdgpu-visibility.cl @@ -0,0 +1,7 @@ +// RUN: %clang -### -target amdgcn-amd-amdhsa -x cl -c -emit-llvm %s 2>&1 | FileCheck -check-prefix=DEFAULT %s +// 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" +// OVERRIDE-PROTECTED: "-fvisibility" "protected" +// OVERRIDE-MS: "-fvisibility" "hidden" "-ftype-visibility" "default" |

