[clang] [AMDGPU][clang] Fix clang driver check for multiple sanitizer arguments (PR #166851)

Amit Kumar Pandey via cfe-commits cfe-commits at lists.llvm.org
Fri Nov 7 23:17:30 PST 2025


================
@@ -1074,27 +1074,32 @@ ROCMToolChain::getCommonDeviceLibNames(
       getSanitizerArgs(DriverArgs).needsAsanRt());
 }
 
-bool AMDGPUToolChain::shouldSkipSanitizeOption(
+std::optional<std::string> AMDGPUToolChain::filterSanitizeOption(
     const ToolChain &TC, const llvm::opt::ArgList &DriverArgs,
     StringRef TargetID, const llvm::opt::Arg *A) const {
   // For actions without targetID, do nothing.
   if (TargetID.empty())
-    return false;
+    return std::nullopt;
   Option O = A->getOption();
 
   if (!O.matches(options::OPT_fsanitize_EQ))
-    return false;
+    return std::nullopt;
 
   if (!DriverArgs.hasFlag(options::OPT_fgpu_sanitize,
                           options::OPT_fno_gpu_sanitize, true))
-    return true;
+    return "";
 
   auto &Diags = TC.getDriver().getDiags();
 
-  // For simplicity, we only allow -fsanitize=address
-  SanitizerMask K = parseSanitizerValue(A->getValue(), /*AllowGroups=*/false);
-  if (K != SanitizerKind::Address)
-    return true;
+  // We only allow the address sanitizer and ignore all other sanitizers.
----------------
ampandey-1995 wrote:

This function is a lower-level helper utility. We can check for whatever options supported by `-fsanitize=` and filter them at higher level.  [getSupportedSanitizers]( https://github.com/llvm/llvm-project/blob/0875755f5275dc7a84b1aeb526b7822b47a733c9/clang/lib/Driver/ToolChains/AMDGPU.h#L154)  might help to cover this part of code.

https://github.com/llvm/llvm-project/pull/166851


More information about the cfe-commits mailing list