aboutsummaryrefslogtreecommitdiff
path: root/clang/lib
diff options
context:
space:
mode:
authorShilei Tian <i@tianshilei.me>2025-04-08 09:57:43 -0400
committerGitHub <noreply@github.com>2025-04-08 09:57:43 -0400
commitf19c6f23abefac56fde9f2b393c9ffa7595c86c6 (patch)
tree722e84c198c6bd1362be1ae16f588f9976b2c2c5 /clang/lib
parent0e9881745834863a6f5a3a05588886bb3eb75cdf (diff)
downloadllvm-f19c6f23abefac56fde9f2b393c9ffa7595c86c6.zip
llvm-f19c6f23abefac56fde9f2b393c9ffa7595c86c6.tar.gz
llvm-f19c6f23abefac56fde9f2b393c9ffa7595c86c6.tar.bz2
[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.
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Driver/ToolChains/AMDGPU.cpp8
-rw-r--r--clang/lib/Driver/ToolChains/ROCm.h6
2 files changed, 11 insertions, 3 deletions
diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp
index dffc70d..29c8403 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 a6cc41d..1ba0f1b 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;
}
};