[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