diff options
author | Shilei Tian <i@tianshilei.me> | 2025-04-08 09:57:43 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-04-08 09:57:43 -0400 |
commit | f19c6f23abefac56fde9f2b393c9ffa7595c86c6 (patch) | |
tree | 722e84c198c6bd1362be1ae16f588f9976b2c2c5 /clang/lib | |
parent | 0e9881745834863a6f5a3a05588886bb3eb75cdf (diff) | |
download | llvm-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.cpp | 8 | ||||
-rw-r--r-- | clang/lib/Driver/ToolChains/ROCm.h | 6 |
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; } }; |