[clang] [sanitizer] Add plumbing for -fsanitize-add-pseudo-functions and partly replace '-mllvm -array-bounds-pseudofn' (PR #138577)
via cfe-commits
cfe-commits at lists.llvm.org
Mon May 5 13:29:09 PDT 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions cpp,c,h -- clang/include/clang/Basic/CodeGenOptions.h clang/include/clang/Driver/SanitizerArgs.h clang/lib/CodeGen/CGExpr.cpp clang/lib/Driver/SanitizerArgs.cpp clang/lib/Frontend/CompilerInvocation.cpp clang/test/CodeGen/bounds-checking-debuginfo.c clang/test/Driver/fsanitize.c
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp
index 4ea41662a..43694dbf4 100644
--- a/clang/lib/CodeGen/CGExpr.cpp
+++ b/clang/lib/CodeGen/CGExpr.cpp
@@ -1228,7 +1228,10 @@ void CodeGenFunction::EmitBoundsCheckImpl(const Expr *E, llvm::Value *Bound,
SanitizerScope SanScope(this);
llvm::DILocation *CheckDI = Builder.getCurrentDebugLocation();
- if ((ClArrayBoundsPseudoFn || CGM.getCodeGenOpts().SanitizeAddPseudoFunctions.has(SanitizerKind::SO_ArrayBounds)) && CheckDI) {
+ if ((ClArrayBoundsPseudoFn ||
+ CGM.getCodeGenOpts().SanitizeAddPseudoFunctions.has(
+ SanitizerKind::SO_ArrayBounds)) &&
+ CheckDI) {
CheckDI = getDebugInfo()->CreateSyntheticInlineAt(
Builder.getCurrentDebugLocation(), "__ubsan_check_array_bounds");
}
diff --git a/clang/lib/Driver/SanitizerArgs.cpp b/clang/lib/Driver/SanitizerArgs.cpp
index fd456ea06..453b03538 100644
--- a/clang/lib/Driver/SanitizerArgs.cpp
+++ b/clang/lib/Driver/SanitizerArgs.cpp
@@ -741,8 +741,8 @@ SanitizerArgs::SanitizerArgs(const ToolChain &TC,
// Parse -f(no-)?sanitize-add-pseudo-functions flags
SanitizerMask AddPseudoFunctionsKinds =
- parseSanitizeArgs(D, Args, DiagnoseErrors, AddPseudoFunctionsDefault, {}, {},
- options::OPT_fsanitize_add_pseudo_functions_EQ,
+ parseSanitizeArgs(D, Args, DiagnoseErrors, AddPseudoFunctionsDefault, {},
+ {}, options::OPT_fsanitize_add_pseudo_functions_EQ,
options::OPT_fno_sanitize_add_pseudo_functions_EQ);
AddPseudoFunctionsKinds &= Kinds;
@@ -1346,8 +1346,8 @@ void SanitizerArgs::addArgs(const ToolChain &TC, const llvm::opt::ArgList &Args,
Args.MakeArgString("-fsanitize-skip-hot-cutoff=" + SkipHotCutoffsStr));
if (!AddPseudoFunctions.empty())
- CmdArgs.push_back(
- Args.MakeArgString("-fsanitize-add-pseudo-functions=" + toString(AddPseudoFunctions)));
+ CmdArgs.push_back(Args.MakeArgString("-fsanitize-add-pseudo-functions=" +
+ toString(AddPseudoFunctions)));
addSpecialCaseListOpt(Args, CmdArgs,
"-fsanitize-ignorelist=", UserIgnorelistFiles);
@@ -1534,7 +1534,8 @@ SanitizerMask parseArgValues(const Driver &D, const llvm::opt::Arg *A,
A->getOption().matches(options::OPT_fsanitize_merge_handlers_EQ) ||
A->getOption().matches(options::OPT_fno_sanitize_merge_handlers_EQ) ||
A->getOption().matches(options::OPT_fsanitize_add_pseudo_functions_EQ) ||
- A->getOption().matches(options::OPT_fno_sanitize_add_pseudo_functions_EQ)) &&
+ A->getOption().matches(
+ options::OPT_fno_sanitize_add_pseudo_functions_EQ)) &&
"Invalid argument in parseArgValues!");
SanitizerMask Kinds;
for (int i = 0, n = A->getNumValues(); i != n; ++i) {
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index d79b0546d..d1fda794d 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -2336,9 +2336,10 @@ bool CompilerInvocation::ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args,
"-fsanitize-skip-hot-cutoff=",
Args.getAllArgValues(OPT_fsanitize_skip_hot_cutoff_EQ), Diags);
- parseSanitizerKinds("-fsanitize-add-pseudo-functions=",
- Args.getAllArgValues(OPT_fsanitize_add_pseudo_functions_EQ),
- Diags, Opts.SanitizeAddPseudoFunctions);
+ parseSanitizerKinds(
+ "-fsanitize-add-pseudo-functions=",
+ Args.getAllArgValues(OPT_fsanitize_add_pseudo_functions_EQ), Diags,
+ Opts.SanitizeAddPseudoFunctions);
Opts.EmitVersionIdentMetadata = Args.hasFlag(OPT_Qy, OPT_Qn, true);
``````````
</details>
https://github.com/llvm/llvm-project/pull/138577
More information about the cfe-commits
mailing list