Author: Joseph Huber
Date: 2026-04-10T12:01:14-05:00
New Revision: be1bc283c610c2b5610e7f7fcdcb78e6ccdb6911

URL: 
https://github.com/llvm/llvm-project/commit/be1bc283c610c2b5610e7f7fcdcb78e6ccdb6911
DIFF: 
https://github.com/llvm/llvm-project/commit/be1bc283c610c2b5610e7f7fcdcb78e6ccdb6911.diff

LOG: [Clang] Permit '--target=amdgcn--' for binaries (#191451)

Summary:
We always accepted `--target=amdgcn--` to create IR object files but it
doesn't allow creating actual binaries without user intervention. This
is because it would fall-through to the GCC toolchain which does not
know how to handle AMGCN / AMDGPU targets. This PR just adds a single
line to handle it, which effectively allows this as a 'bare' target.

Perhaps the argument could be made that AMDGPU should not support
anything but strictly HSA because it has many assumptions in the
compiler itself, such as implicit arguments, but I feel like it is
relatively harmless to support this case if users decide they really do
not need it.

Added: 
    

Modified: 
    clang/lib/Driver/Driver.cpp
    clang/test/Driver/amdgpu-features.c
    clang/test/Driver/amdgpu-toolchain.c

Removed: 
    


################################################################################
diff  --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index e3e4485c73690..c66b5915917d4 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -7198,6 +7198,10 @@ const ToolChain &Driver::getToolChain(const ArgList 
&Args,
       case llvm::Triple::csky:
         TC = std::make_unique<toolchains::CSKYToolChain>(*this, Target, Args);
         break;
+      case llvm::Triple::amdgcn:
+      case llvm::Triple::r600:
+        TC = std::make_unique<toolchains::AMDGPUToolChain>(*this, Target, 
Args);
+        break;
       default:
         if (toolchains::BareMetal::handlesTarget(Target))
           TC = std::make_unique<toolchains::BareMetal>(*this, Target, Args);

diff  --git a/clang/test/Driver/amdgpu-features.c 
b/clang/test/Driver/amdgpu-features.c
index 864744db203e9..c756b91379180 100644
--- a/clang/test/Driver/amdgpu-features.c
+++ b/clang/test/Driver/amdgpu-features.c
@@ -10,8 +10,8 @@
 // RUN: %clang -### --target=amdgcn-amdhsa -mcpu=gfx908:sramecc- -nogpulib %s 
2>&1 | FileCheck --check-prefix=NO-SRAM-ECC %s
 // NO-SRAM-ECC: "-target-feature" "-sramecc"
 
-// RUN: %clang -### -target amdgcn -mcpu=gfx90A -mtgsplit %s 2>&1 | FileCheck 
--check-prefix=TGSPLIT %s
-// RUN: %clang -### -target amdgcn -mcpu=gfx90A -mno-tgsplit %s 2>&1 | 
FileCheck --check-prefix=NO-TGSPLIT %s
+// RUN: %clang -### -target amdgcn -mcpu=gfx90a -mtgsplit %s 2>&1 | FileCheck 
--check-prefix=TGSPLIT %s
+// RUN: %clang -### -target amdgcn -mcpu=gfx90a -mno-tgsplit %s 2>&1 | 
FileCheck --check-prefix=NO-TGSPLIT %s
 // TGSPLIT: "-target-feature" "+tgsplit"
 // NO-TGSPLIT: "-target-feature" "-tgsplit"
 

diff  --git a/clang/test/Driver/amdgpu-toolchain.c 
b/clang/test/Driver/amdgpu-toolchain.c
index 2a48ca6bb7670..0693263947543 100644
--- a/clang/test/Driver/amdgpu-toolchain.c
+++ b/clang/test/Driver/amdgpu-toolchain.c
@@ -4,10 +4,14 @@
 // RUN: %clang -### -g --target=amdgcn-amd-amdpal -mcpu=kaveri %s 2>&1 | 
FileCheck -check-prefix=DWARF_VER %s
 // RUN: %clang -### --target=amdgcn-mesa-mesa3d -x assembler -mcpu=kaveri %s 
2>&1 | FileCheck -check-prefix=AS_LINK %s
 // RUN: %clang -### -g --target=amdgcn-mesa-mesa3d -mcpu=kaveri %s 2>&1 | 
FileCheck -check-prefix=DWARF_VER %s
+// RUN: %clang -### --target=amdgcn-- -mcpu=kaveri %s 2>&1 | FileCheck 
-check-prefix=BARE %s
+// RUN: %clang -### -g --target=amdgcn-- -mcpu=kaveri %s 2>&1 | FileCheck 
-check-prefix=DWARF_VER %s
 
 // AS_LINK: "-cc1as"
 // AS_LINK: ld.lld{{.*}} "--no-undefined" "-shared"
 
+// BARE: ld.lld{{.*}} "--no-undefined" "-shared"
+
 // DWARF_VER: "-dwarf-version=5"
 
 // RUN: %clang -### --target=amdgcn--amdhsa -x assembler \


        
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to