This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. yaxunl marked an inline comment as done. Closed by commit rGaa964f157f9b: [HIP] Fix -mllvm option for device lld linker (authored by yaxunl). Herald added a project: clang.
Changed prior to commit: https://reviews.llvm.org/D154145?vs=535969&id=536302#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D154145/new/ https://reviews.llvm.org/D154145 Files: clang/lib/Driver/ToolChains/HIPAMD.cpp clang/test/Driver/hip-toolchain-mllvm.hip Index: clang/test/Driver/hip-toolchain-mllvm.hip =================================================================== --- clang/test/Driver/hip-toolchain-mllvm.hip +++ clang/test/Driver/hip-toolchain-mllvm.hip @@ -1,30 +1,47 @@ // 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. + // RUN: %clang -### --target=x86_64-linux-gnu \ // RUN: --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 \ -// RUN: -mllvm -amdgpu-function-calls=0 \ +// RUN: -mllvm -unroll-count=10 \ +// RUN: -Xoffload-linker -mllvm=-inline-threshold=100 \ // RUN: %s 2>&1 | FileCheck %s // RUN: %clang -### --target=x86_64-linux-gnu \ // RUN: --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 \ -// RUN: -fgpu-rdc -mllvm -amdgpu-function-calls=0 \ -// RUN: %s 2>&1 | FileCheck -check-prefixes=CHECK,RDC %s +// RUN: -mllvm -unroll-count=10 \ +// RUN: -Xoffload-linker -mllvm=-inline-threshold=100 \ +// RUN: %s 2>&1 | FileCheck -check-prefix=NEG %s + +// RUN: %clang -### --target=x86_64-linux-gnu \ +// RUN: --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 \ +// RUN: -fgpu-rdc -mllvm -unroll-count=10 \ +// RUN: -Xoffload-linker -mllvm=-inline-threshold=100 \ +// RUN: %s 2>&1 | FileCheck %s + +// RUN: %clang -### --target=x86_64-linux-gnu \ +// RUN: --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 \ +// RUN: -fgpu-rdc -mllvm -unroll-count=10 \ +// RUN: -Xoffload-linker -mllvm=-inline-threshold=100 \ +// RUN: %s 2>&1 | FileCheck -check-prefix=NEG %s // CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa" // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" // CHECK-SAME: {{.*}} "-target-cpu" "gfx803" -// CHECK-SAME: {{.*}} "-mllvm" "-amdgpu-function-calls=0" {{.*}} - -// CHECK-NOT: {{".*opt"}} -// CHECK-NOT: {{".*llc"}} -// RDC: [[LLD:".*lld.*"]] {{.*}} "-plugin-opt=-amdgpu-function-calls=0" +// CHECK-SAME: {{.*}} "-mllvm" "-unroll-count=10" {{.*}} +// CHECK: [[LLD:".*lld.*"]] {{.*}}"-m" "elf64_amdgpu"{{.*}} "-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" "-amdgpu-function-calls=0" {{.*}} +// CHECK-SAME: {{.*}} "-mllvm" "-unroll-count=10" {{.*}} +// CHECK: [[LLD:".*lld.*"]] {{.*}} "-plugin-opt=-inline-threshold=100" -// CHECK-NOT: {{".*opt"}} -// CHECK-NOT: {{".*llc"}} -// RDC: [[LLD:".*lld.*"]] {{.*}} "-plugin-opt=-amdgpu-function-calls=0" +// NEG-NOT: {{".*opt"}} +// NEG-NOT: {{".*llc"}} +// NEG-NOT: "-plugin-opt=-unroll-count=10" +// NEG-NOT: "-m" "elf_x86_64"{{.*}} "-plugin-opt=-inline-threshold=100" Index: clang/lib/Driver/ToolChains/HIPAMD.cpp =================================================================== --- clang/lib/Driver/ToolChains/HIPAMD.cpp +++ clang/lib/Driver/ToolChains/HIPAMD.cpp @@ -142,11 +142,6 @@ 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"); @@ -165,7 +160,14 @@ LldArgs.push_back("--whole-archive"); for (auto *Arg : Args.filtered(options::OPT_Xoffload_linker)) { - LldArgs.push_back(Arg->getValue(1)); + StringRef ArgVal = Arg->getValue(1); + auto SplitArg = ArgVal.split("-mllvm="); + if (!SplitArg.second.empty()) { + LldArgs.push_back( + Args.MakeArgString(Twine("-plugin-opt=") + SplitArg.second)); + } else { + LldArgs.push_back(Args.MakeArgString(ArgVal)); + } Arg->claim(); }
Index: clang/test/Driver/hip-toolchain-mllvm.hip =================================================================== --- clang/test/Driver/hip-toolchain-mllvm.hip +++ clang/test/Driver/hip-toolchain-mllvm.hip @@ -1,30 +1,47 @@ // 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. + // RUN: %clang -### --target=x86_64-linux-gnu \ // RUN: --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 \ -// RUN: -mllvm -amdgpu-function-calls=0 \ +// RUN: -mllvm -unroll-count=10 \ +// RUN: -Xoffload-linker -mllvm=-inline-threshold=100 \ // RUN: %s 2>&1 | FileCheck %s // RUN: %clang -### --target=x86_64-linux-gnu \ // RUN: --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 \ -// RUN: -fgpu-rdc -mllvm -amdgpu-function-calls=0 \ -// RUN: %s 2>&1 | FileCheck -check-prefixes=CHECK,RDC %s +// RUN: -mllvm -unroll-count=10 \ +// RUN: -Xoffload-linker -mllvm=-inline-threshold=100 \ +// RUN: %s 2>&1 | FileCheck -check-prefix=NEG %s + +// RUN: %clang -### --target=x86_64-linux-gnu \ +// RUN: --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 \ +// RUN: -fgpu-rdc -mllvm -unroll-count=10 \ +// RUN: -Xoffload-linker -mllvm=-inline-threshold=100 \ +// RUN: %s 2>&1 | FileCheck %s + +// RUN: %clang -### --target=x86_64-linux-gnu \ +// RUN: --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 \ +// RUN: -fgpu-rdc -mllvm -unroll-count=10 \ +// RUN: -Xoffload-linker -mllvm=-inline-threshold=100 \ +// RUN: %s 2>&1 | FileCheck -check-prefix=NEG %s // CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa" // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" // CHECK-SAME: {{.*}} "-target-cpu" "gfx803" -// CHECK-SAME: {{.*}} "-mllvm" "-amdgpu-function-calls=0" {{.*}} - -// CHECK-NOT: {{".*opt"}} -// CHECK-NOT: {{".*llc"}} -// RDC: [[LLD:".*lld.*"]] {{.*}} "-plugin-opt=-amdgpu-function-calls=0" +// CHECK-SAME: {{.*}} "-mllvm" "-unroll-count=10" {{.*}} +// CHECK: [[LLD:".*lld.*"]] {{.*}}"-m" "elf64_amdgpu"{{.*}} "-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" "-amdgpu-function-calls=0" {{.*}} +// CHECK-SAME: {{.*}} "-mllvm" "-unroll-count=10" {{.*}} +// CHECK: [[LLD:".*lld.*"]] {{.*}} "-plugin-opt=-inline-threshold=100" -// CHECK-NOT: {{".*opt"}} -// CHECK-NOT: {{".*llc"}} -// RDC: [[LLD:".*lld.*"]] {{.*}} "-plugin-opt=-amdgpu-function-calls=0" +// NEG-NOT: {{".*opt"}} +// NEG-NOT: {{".*llc"}} +// NEG-NOT: "-plugin-opt=-unroll-count=10" +// NEG-NOT: "-m" "elf_x86_64"{{.*}} "-plugin-opt=-inline-threshold=100" Index: clang/lib/Driver/ToolChains/HIPAMD.cpp =================================================================== --- clang/lib/Driver/ToolChains/HIPAMD.cpp +++ clang/lib/Driver/ToolChains/HIPAMD.cpp @@ -142,11 +142,6 @@ 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"); @@ -165,7 +160,14 @@ LldArgs.push_back("--whole-archive"); for (auto *Arg : Args.filtered(options::OPT_Xoffload_linker)) { - LldArgs.push_back(Arg->getValue(1)); + StringRef ArgVal = Arg->getValue(1); + auto SplitArg = ArgVal.split("-mllvm="); + if (!SplitArg.second.empty()) { + LldArgs.push_back( + Args.MakeArgString(Twine("-plugin-opt=") + SplitArg.second)); + } else { + LldArgs.push_back(Args.MakeArgString(ArgVal)); + } Arg->claim(); }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits