[clang] clang/AMDGPU: Report all runtimeless sanitizers as available (PR #199642)

Matt Arsenault via cfe-commits cfe-commits at lists.llvm.org
Tue May 26 14:56:29 PDT 2026


https://github.com/arsenm updated https://github.com/llvm/llvm-project/pull/199642

>From 047afab69f72c1a5535988b776744725b68e4c62 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Tue, 26 May 2026 10:46:25 +0100
Subject: [PATCH] clang/AMDGPU: Report all runtimeless sanitizers as available

---
 clang/lib/Driver/ToolChains/AMDGPU.cpp        |  2 +-
 clang/test/Driver/amdgpu-validate-sanitize.cl | 18 ++++++++++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp
index c58891b1add56..fd09dcd5da5f4 100644
--- a/clang/lib/Driver/ToolChains/AMDGPU.cpp
+++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp
@@ -1119,7 +1119,7 @@ static bool isXnackAvailable(const llvm::Triple &TT, llvm::StringRef TargetID) {
 SanitizerMask AMDGPUToolChain::getSupportedSanitizers(
     StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const {
   SanitizerMask SupportedMask =
-      SanitizerKind::Undefined | SanitizerKind::UndefinedGroup;
+      ToolChain::getSupportedSanitizers(BoundArch, DeviceOffloadKind);
 
   // Address sanitizer is potentially supported, but depends on the exact target
   // arch xnack support.
diff --git a/clang/test/Driver/amdgpu-validate-sanitize.cl b/clang/test/Driver/amdgpu-validate-sanitize.cl
index c7df26c95da87..907ad201b15b3 100644
--- a/clang/test/Driver/amdgpu-validate-sanitize.cl
+++ b/clang/test/Driver/amdgpu-validate-sanitize.cl
@@ -8,6 +8,20 @@
 // RUN:   -nogpuinc --rocm-path=%S/Inputs/rocm \
 // RUN:   %s 2>&1 | FileCheck %s
 
+// RUN: %clang -### --target=amdgcn-amd-amdhsa -mcpu=gfx900 \
+// RUN:   -fsanitize=undefined \
+// RUN:   -fsanitize=unsigned-integer-overflow     \
+// RUN:   -fsanitize=float-divide-by-zero     \
+// RUN:   -fsanitize=unsigned-integer-overflow \
+// RUN:   -fsanitize=unsigned-shift-base \
+// RUN:   -fsanitize=implicit-conversion \
+// RUN:   -fsanitize=nullability \
+// RUN:   -fsanitize=local-bounds \
+// RUN:   -fsanitize=alloc-token \
+// RUN:   -nogpuinc --rocm-path=%S/Inputs/rocm \
+// RUN:   %s 2>&1 | FileCheck -check-prefix=GENERIC %s
+
+
 // FIXME: This should error, but is silently ignored
 // RUN: %clang -### --target=amdgcn-amd-amdhsa -mcpu=gfx900:xnack- \
 // RUN:   -fsanitize=address \
@@ -18,6 +32,10 @@
 // CHECK-SAME: "-mlink-bitcode-file" "{{.*}}asanrtl.bc"
 // CHECK-SAME: "-fsanitize=address"
 
+
+// GENERIC: "-fsanitize=alignment,array-bounds,bool,builtin,enum,float-cast-overflow,float-divide-by-zero,function,integer-divide-by-zero,nonnull-attribute,null,nullability-arg,nullability-assign,nullability-return,pointer-overflow,return,returns-nonnull-attribute,shift-base,shift-exponent,signed-integer-overflow,unreachable,vla-bound,unsigned-integer-overflow,unsigned-shift-base,implicit-unsigned-integer-truncation,implicit-signed-integer-truncation,implicit-integer-sign-change,implicit-bitfield-conversion,local-bounds,alloc-token" "-fsanitize-recover=alignment,array-bounds,bool,builtin,enum,float-cast-overflow,float-divide-by-zero,function,integer-divide-by-zero,nonnull-attribute,null,nullability-arg,nullability-assign,nullability-return,pointer-overflow,returns-nonnull-attribute,shift-base,shift-exponent,signed-integer-overflow,vla-bound,unsigned-integer-overflow,unsigned-shift-base,implicit-unsigned-integer-truncation,implicit-signed-integer-truncation,implicit-integer-sign-change,implicit-bitfield-conversion" "-fsanitize-trap=local-bounds" "-fsanitize-merge=alignment,array-bounds,bool,builtin,enum,float-cast-overflow,function,integer-divide-by-zero,nonnull-attribute,null,pointer-overflow,return,returns-nonnull-attribute,shift-base,shift-exponent,signed-integer-overflow,unreachable,vla-bound"
+
+
 // FIXME: Should not be forwarding argument
 // ERR-NOT: asanrtl.bc
 // ERR: "-fsanitize=address"



More information about the cfe-commits mailing list