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" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits