[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