diff --git a/clang/lib/Driver/ToolChains/HIPAMD.cpp b/clang/lib/Driver/ToolChains/HIPAMD.cpp index ccb36a6c846c8..f9854a4840092 100644 --- a/clang/lib/Driver/ToolChains/HIPAMD.cpp +++ b/clang/lib/Driver/ToolChains/HIPAMD.cpp @@ -142,6 +142,11 @@ void AMDGCN::Linker::constructLldCommand(Compilation &C, const JobAction &JA, if (IsThinLTO) LldArgs.push_back(Args.MakeArgString("-plugin-opt=-force-import-all")); + for (const Arg *A : Args.filtered(options::OPT_mllvm)) { + LldArgs.push_back( + Args.MakeArgString(Twine("-plugin-opt=") + A->getValue(0))); + } + if (C.getDriver().isSaveTempsEnabled()) LldArgs.push_back("-save-temps"); diff --git a/clang/test/Driver/hip-toolchain-mllvm.hip b/clang/test/Driver/hip-toolchain-mllvm.hip index 194cecc40db58..110d1c9b7fd33 100644 --- a/clang/test/Driver/hip-toolchain-mllvm.hip +++ b/clang/test/Driver/hip-toolchain-mllvm.hip @@ -1,9 +1,9 @@ // REQUIRES: x86-registered-target // REQUIRES: amdgpu-registered-target -// Check only -Xoffload-linker -mllvm=* options are passed -// to device lld linker. -// -mllvm options are passed to clang only. +// Check -Xoffload-linker -mllvm=* options are passed +// to device lld linker only. +// -mllvm options are passed to clang and device lld linker. // RUN: %clang -### --target=x86_64-linux-gnu \ // RUN: --offload-arch=gfx803 --offload-arch=gfx900 \ @@ -33,15 +33,15 @@ // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" // CHECK-SAME: {{.*}} "-target-cpu" "gfx803" // CHECK-SAME: {{.*}} "-mllvm" "-unroll-count=10" {{.*}} -// CHECK: [[LLD:".*lld.*"]] {{.*}}"-m" "elf64_amdgpu"{{.*}} "-plugin-opt=-inline-threshold=100" +// CHECK: [[LLD:".*lld.*"]] {{.*}}"-m" "elf64_amdgpu"{{.*}} "-plugin-opt=-unroll-count=10"{{.*}} "-plugin-opt=-inline-threshold=100" // CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" // CHECK-SAME: {{.*}} "-target-cpu" "gfx900" // CHECK-SAME: {{.*}} "-mllvm" "-unroll-count=10" {{.*}} -// CHECK: [[LLD:".*lld.*"]] {{.*}} "-plugin-opt=-inline-threshold=100" +// CHECK: [[LLD:".*lld.*"]] {{.*}} "-plugin-opt=-unroll-count=10"{{.*}} "-plugin-opt=-inline-threshold=100" // NEG-NOT: {{".*opt"}} // NEG-NOT: {{".*llc"}} -// NEG-NOT: "-plugin-opt=-unroll-count=10" +// NEG-NOT: "-m" "elf_x86_64"{{.*}} "-plugin-opt=-unroll-count=10" // NEG-NOT: "-m" "elf_x86_64"{{.*}} "-plugin-opt=-inline-threshold=100"