[clang] 377806a - [HIP] Fix static lib name on windows
Yaxun Liu via cfe-commits
cfe-commits at lists.llvm.org
Tue May 31 19:14:13 PDT 2022
Author: Yaxun (Sam) Liu
Date: 2022-05-31T22:13:50-04:00
New Revision: 377806a65ea97837c99d9791db9d462b63b9135a
URL: https://github.com/llvm/llvm-project/commit/377806a65ea97837c99d9791db9d462b63b9135a
DIFF: https://github.com/llvm/llvm-project/commit/377806a65ea97837c99d9791db9d462b63b9135a.diff
LOG: [HIP] Fix static lib name on windows
clang by default assumes static library name to be xxx.lib
when -lxxx is specified on Windows with MSVC environment,
instead of libxxx.a.
This patch fixes static device library unbundling for that.
It falls back to libxxx.a if xxx.lib is not found.
Reviewed by: Artem Belevich
Differential Revision: https://reviews.llvm.org/D126681
Added:
Modified:
clang/lib/Driver/ToolChains/CommonArgs.cpp
clang/test/Driver/hip-link-bundle-archive.hip
Removed:
################################################################################
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 45add8ad94a5..7a22ac4afa7e 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -1782,8 +1782,13 @@ bool tools::GetSDLFromOffloadArchive(
for (auto LPath : LibraryPaths) {
ArchiveOfBundles.clear();
- AOBFileNames.push_back(Twine(LPath + "/libdevice/lib" + Lib + ".a").str());
- AOBFileNames.push_back(Twine(LPath + "/lib" + Lib + ".a").str());
+ llvm::Triple Triple(D.getTargetTriple());
+ bool IsMSVC = Triple.isWindowsMSVCEnvironment();
+ for (auto Prefix : {"/libdevice/", "/"}) {
+ if (IsMSVC)
+ AOBFileNames.push_back(Twine(LPath + Prefix + Lib + ".lib").str());
+ AOBFileNames.push_back(Twine(LPath + Prefix + "lib" + Lib + ".a").str());
+ }
for (auto AOB : AOBFileNames) {
if (llvm::sys::fs::exists(AOB)) {
diff --git a/clang/test/Driver/hip-link-bundle-archive.hip b/clang/test/Driver/hip-link-bundle-archive.hip
index 641bf59b6346..7ffe135405da 100644
--- a/clang/test/Driver/hip-link-bundle-archive.hip
+++ b/clang/test/Driver/hip-link-bundle-archive.hip
@@ -1,14 +1,28 @@
// REQUIRES: x86-registered-target, amdgpu-registered-target
-// RUN: touch %T/libhipBundled.a
// Check clang unbundle the archive and link them by lld.
+// RUN: touch %T/libhipBundled.a
// RUN: %clang -### --offload-arch=gfx906 --offload-arch=gfx1030 \
+// RUN: -target x86_64-unknown-linux-gnu \
// RUN: -nogpulib %s -fgpu-rdc -L%T -lhipBundled \
-// RUN: 2>&1 | FileCheck -check-prefix=CHECK %s
+// RUN: 2>&1 | FileCheck -check-prefix=GNU %s
+
+// RUN: touch %T/hipBundled2.lib
+// RUN: %clang -### --offload-arch=gfx906 --offload-arch=gfx1030 \
+// RUN: -target x86_64-pc-windows-msvc \
+// RUN: -nogpulib %s -fgpu-rdc -L%T -lhipBundled2 \
+// RUN: 2>&1 | FileCheck -check-prefix=MSVC %s
+
+// GNU: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}libhipBundled.a" "-targets=hip-amdgcn-amd-amdhsa-gfx1030" "-output=[[A1030:.*\.a]]" "-allow-missing-bundles"
+// GNU: "{{.*}}lld{{.*}}" {{.*}}"-plugin-opt=mcpu=gfx1030" {{.*}} "[[A1030]]"
+// GNU: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}libhipBundled.a" "-targets=hip-amdgcn-amd-amdhsa-gfx906" "-output=[[A906:.*\.a]]" "-allow-missing-bundles"
+// GNU: "{{.*}}lld{{.*}}" {{.*}}"-plugin-opt=mcpu=gfx906" {{.*}} "[[A906]]"
+// GNU: "{{.*}}ld{{.*}}" {{.*}}"-o" "a.out" {{.*}}"-lhipBundled"
-// CHECK: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}libhipBundled.a" "-targets=hip-amdgcn-amd-amdhsa-gfx1030" "-output=[[A1030:.*\.a]]" "-allow-missing-bundles"
-// CHECK: "{{.*}}lld{{.*}}" {{.*}}"-plugin-opt=mcpu=gfx1030" {{.*}} "[[A1030]]"
-// CHECK: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}libhipBundled.a" "-targets=hip-amdgcn-amd-amdhsa-gfx906" "-output=[[A906:.*\.a]]" "-allow-missing-bundles"
-// CHECK: "{{.*}}lld{{.*}}" {{.*}}"-plugin-opt=mcpu=gfx906" {{.*}} "[[A906]]"
+// MSVC: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}hipBundled2.lib" "-targets=hip-amdgcn-amd-amdhsa-gfx1030" "-output=[[A1030:.*\.a]]" "-allow-missing-bundles"
+// MSVC: "{{.*}}lld{{.*}}" {{.*}}"-plugin-opt=mcpu=gfx1030" {{.*}} "[[A1030]]"
+// MSVC: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}hipBundled2.lib" "-targets=hip-amdgcn-amd-amdhsa-gfx906" "-output=[[A906:.*\.a]]" "-allow-missing-bundles"
+// MSVC: "{{.*}}lld{{.*}}" {{.*}}"-plugin-opt=mcpu=gfx906" {{.*}} "[[A906]]"
+// MSVC: "{{.*}}link{{.*}}" {{.*}}"-out:a.exe" {{.*}}"hipBundled2.lib"
More information about the cfe-commits
mailing list