[clang] 50835f0 - [Clang] Do not pass `-shared` when using `-r` for AMDGPU (#100760)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Jul 26 08:25:31 PDT 2024
Author: Joseph Huber
Date: 2024-07-26T10:25:28-05:00
New Revision: 50835f0a364e850e097c40f81364909c72bb2156
URL: https://github.com/llvm/llvm-project/commit/50835f0a364e850e097c40f81364909c72bb2156
DIFF: https://github.com/llvm/llvm-project/commit/50835f0a364e850e097c40f81364909c72bb2156.diff
LOG: [Clang] Do not pass `-shared` when using `-r` for AMDGPU (#100760)
Summary:
We can use `-r` and `--lto-emit-llvm` to get the LTO pass to optimize +
link LLVM-IR. Currently this doesn't work on AMDGPU because it always
passes `-shared` which is incompatible with `-r`. Fix that so we can use
it.
Added:
Modified:
clang/lib/Driver/ToolChains/AMDGPU.cpp
clang/test/Driver/amdgpu-toolchain.c
Removed:
################################################################################
diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp
index f6c7300162b9e..f796c31af8f67 100644
--- a/clang/lib/Driver/ToolChains/AMDGPU.cpp
+++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp
@@ -620,8 +620,10 @@ void amdgpu::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const char *LinkingOutput) const {
std::string Linker = getToolChain().GetLinkerPath();
ArgStringList CmdArgs;
- CmdArgs.push_back("--no-undefined");
- CmdArgs.push_back("-shared");
+ if (!Args.hasArg(options::OPT_r)) {
+ CmdArgs.push_back("--no-undefined");
+ CmdArgs.push_back("-shared");
+ }
addLinkerCompressDebugSectionsOption(getToolChain(), Args, CmdArgs);
Args.AddAllArgs(CmdArgs, options::OPT_L);
diff --git a/clang/test/Driver/amdgpu-toolchain.c b/clang/test/Driver/amdgpu-toolchain.c
index 8ab6a07131474..ebd1158b63074 100644
--- a/clang/test/Driver/amdgpu-toolchain.c
+++ b/clang/test/Driver/amdgpu-toolchain.c
@@ -28,3 +28,7 @@
// RUN: %clang -### --target=amdgcn-amd-amdhsa -mcpu=gfx906 -nogpulib \
// RUN: -fuse-ld=ld %s 2>&1 | FileCheck -check-prefixes=LD %s
// LD: ld.lld
+
+// RUN: %clang -### --target=amdgcn-amd-amdhsa -mcpu=gfx906 -nogpulib \
+// RUN: -r %s 2>&1 | FileCheck -check-prefixes=RELO %s
+// RELO-NOT: -shared
More information about the cfe-commits
mailing list