[clang] f19c6f2 - [Clang][AMDGPU] Improve error message when device libraries for COV6 are missing (#134745)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 8 06:57:47 PDT 2025
Author: Shilei Tian
Date: 2025-04-08T09:57:43-04:00
New Revision: f19c6f23abefac56fde9f2b393c9ffa7595c86c6
URL: https://github.com/llvm/llvm-project/commit/f19c6f23abefac56fde9f2b393c9ffa7595c86c6
DIFF: https://github.com/llvm/llvm-project/commit/f19c6f23abefac56fde9f2b393c9ffa7595c86c6.diff
LOG: [Clang][AMDGPU] Improve error message when device libraries for COV6 are missing (#134745)
#130963 switches the default to COV6, which requires ROCm 6.3.
Currently, if the
device libraries for COV6 are not found, the error message is not very
helpful.
This PR provides a more informative error message in such cases.
Added:
Modified:
clang/include/clang/Basic/DiagnosticDriverKinds.td
clang/lib/Driver/ToolChains/AMDGPU.cpp
clang/lib/Driver/ToolChains/ROCm.h
clang/test/Driver/hip-device-libs.hip
Removed:
################################################################################
diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td
index df24cca49aaae..a96b4fb33390c 100644
--- a/clang/include/clang/Basic/DiagnosticDriverKinds.td
+++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td
@@ -67,7 +67,8 @@ def err_drv_no_cuda_libdevice : Error<
"libdevice">;
def err_drv_no_rocm_device_lib : Error<
- "cannot find ROCm device library%select{| for %1| for ABI version %1}0; provide its path via "
+ "cannot find ROCm device library%select{| for %1| for ABI version %1"
+ "%select{|, which requires ROCm %3 or higher}2}0; provide its path via "
"'--rocm-path' or '--rocm-device-lib-path', or pass '-nogpulib' to build "
"without ROCm device library">;
def err_drv_no_hip_runtime : Error<
diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp
index dffc70d5e5b69..29c84037b523a 100644
--- a/clang/lib/Driver/ToolChains/AMDGPU.cpp
+++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp
@@ -935,7 +935,13 @@ bool RocmInstallationDetector::checkCommonBitcodeLibs(
return false;
}
if (ABIVer.requiresLibrary() && getABIVersionPath(ABIVer).empty()) {
- D.Diag(diag::err_drv_no_rocm_device_lib) << 2 << ABIVer.toString();
+ // Starting from COV6, we will report minimum ROCm version requirement in
+ // the error message.
+ if (ABIVer.getAsCodeObjectVersion() < 6)
+ D.Diag(diag::err_drv_no_rocm_device_lib) << 2 << ABIVer.toString() << 0;
+ else
+ D.Diag(diag::err_drv_no_rocm_device_lib)
+ << 2 << ABIVer.toString() << 1 << "6.3";
return false;
}
return true;
diff --git a/clang/lib/Driver/ToolChains/ROCm.h b/clang/lib/Driver/ToolChains/ROCm.h
index a6cc41db383b6..1ba0f1b9f30d6 100644
--- a/clang/lib/Driver/ToolChains/ROCm.h
+++ b/clang/lib/Driver/ToolChains/ROCm.h
@@ -37,9 +37,11 @@ struct DeviceLibABIVersion {
/// and below works with ROCm 5.0 and below which does not have
/// abi_version_*.bc. Code object v5 requires abi_version_500.bc.
bool requiresLibrary() { return ABIVersion >= 500; }
- std::string toString() {
+ std::string toString() { return Twine(getAsCodeObjectVersion()).str(); }
+
+ unsigned getAsCodeObjectVersion() const {
assert(ABIVersion % 100 == 0 && "Not supported");
- return Twine(ABIVersion / 100).str();
+ return ABIVersion / 100;
}
};
diff --git a/clang/test/Driver/hip-device-libs.hip b/clang/test/Driver/hip-device-libs.hip
index c7cafd0027bc5..b123f741bdee5 100644
--- a/clang/test/Driver/hip-device-libs.hip
+++ b/clang/test/Driver/hip-device-libs.hip
@@ -254,4 +254,4 @@
// NOABI4-NOT: "-mlink-builtin-bitcode" "{{.*}}oclc_abi_version_400.bc"
// NOABI4-NOT: "-mlink-builtin-bitcode" "{{.*}}oclc_abi_version_500.bc"
// NOABI5: error: cannot find ROCm device library for ABI version 5; provide its path via '--rocm-path' or '--rocm-device-lib-path', or pass '-nogpulib' to build without ROCm device library
-// NOABI6: error: cannot find ROCm device library for ABI version 6; provide its path via '--rocm-path' or '--rocm-device-lib-path', or pass '-nogpulib' to build without ROCm device library
+// NOABI6: error: cannot find ROCm device library for ABI version 6, which requires ROCm 6.3 or higher; provide its path via '--rocm-path' or '--rocm-device-lib-path', or pass '-nogpulib' to build without ROCm device library
More information about the cfe-commits
mailing list