HIP: Remove ROMClang compiler id and use Clang directly

Since commit bd844387df (ROCMClang: Add the ROCm toolkit derived clang
compiler to CMake, 2020-08-28, v3.21.0-rc1~66^2~6) and commit ff0d2858e1
(HIP: Extract clang compiler details from hipcc, 2020-10-21,
v3.21.0-rc1~66^2~5), the separate `ROCMClang` compiler id for `hipcc`
has caused a few problems:

* The compiler id changed from behavior of CMake 3.20 and below,
  breaking projects that already built with `hipcc` treated as `Clang`.

* The implementation of `target_compile_features` was incomplete for
  the `ROCMClang` identity.

* Only `hipcc` was identified as `ROCMClang`, so after it is unwrapped
  to the underlying `clang++`, future runs of new CMake versions on
  an existing build tree would not repeat this.

* Clang should be usable as a HIP compiler without the `hipcc` wrapper.

Remove the `ROMClang` compiler identity, and revise HIP language support
to work directly with a Clang compiler.

Reject direct `hipcc` usage as a HIP compiler.  For now it cannot be
supported because it interferes with flags CMake needs to pass to Clang.

Fixes: #22536, #22460, #22593
This commit is contained in:
Brad King
2021-09-13 17:31:28 +00:00
parent b125e9809a
commit a71f0fc9c7
17 changed files with 35 additions and 166 deletions
+10
View File
@@ -319,3 +319,13 @@ Changes made since CMake 3.21.0 include the following.
* The :generator:`Visual Studio 17 2022` generator is now based on
"Visual Studio 2022 Preview 4". Previously it was based on "Preview 3.1".
* The AMD ROCm Platform ``hipcc`` compiler was identifed by CMake 3.21.0
through 3.21.2 as a distinct compiler with id ``ROCMClang``. This has
been removed because it caused regressions. Instead:
* ``hipcc`` may no longer be used as a ``HIP`` compiler because it
interferes with flags CMake needs to pass to Clang. Use Clang directly.
* ``hipcc`` may once again be used as a ``CXX`` compiler, and is treated as
whatever compiler it selects underneath, as CMake 3.20 and below did.
-1
View File
@@ -34,7 +34,6 @@ include:
OpenWatcom = Open Watcom (openwatcom.org)
PGI = The Portland Group (pgroup.com)
PathScale = PathScale (pathscale.com)
ROCMClang = ROCm Toolkit Clang-based Compiler (rocmdocs.amd.com)
SDCC = Small Device C Compiler (sdcc.sourceforge.net)
SunPro = Oracle Solaris Studio (oracle.com)
TI = Texas Instruments (ti.com)