aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp
diff options
context:
space:
mode:
authorFangyi Zhou <me@fangyi.io>2025-04-25 12:32:38 +0100
committerGitHub <noreply@github.com>2025-04-25 13:32:38 +0200
commit317763580fa92a05ba04f4a04677124acb958ea3 (patch)
treecadcb478767ec933dcfcfcae0eace45c3a0c9bbd /clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp
parentd775b911c90e631f5cc332c07474f7121564e25b (diff)
downloadllvm-317763580fa92a05ba04f4a04677124acb958ea3.zip
llvm-317763580fa92a05ba04f4a04677124acb958ea3.tar.gz
llvm-317763580fa92a05ba04f4a04677124acb958ea3.tar.bz2
[clang][analyzer][NFC] Add a helper for conjuring symbols at call events (#137182)
Per suggestion in https://github.com/llvm/llvm-project/pull/128251#discussion_r2055916229, adding a new helper function in `SValBuilder` to conjure a symbol when given a `CallEvent`. Tested manually (with assertions) that the `LocationContext *` obtained from the `CallEvent` are identical to those passed in the original argument.
Diffstat (limited to 'clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp')
-rw-r--r--clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp11
1 files changed, 4 insertions, 7 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp
index 9c0b79a..17227a2 100644
--- a/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp
@@ -584,11 +584,9 @@ class StdLibraryFunctionsChecker
const Summary &Summary,
CheckerContext &C) const override {
SValBuilder &SVB = C.getSValBuilder();
- NonLoc ErrnoSVal =
- SVB.conjureSymbolVal(&Tag, Call.getOriginExpr(),
- C.getLocationContext(), C.getASTContext().IntTy,
- C.blockCount())
- .castAs<NonLoc>();
+ NonLoc ErrnoSVal = SVB.conjureSymbolVal(Call, C.getASTContext().IntTy,
+ C.blockCount(), &Tag)
+ .castAs<NonLoc>();
return errno_modeling::setErrnoForStdFailure(State, C, ErrnoSVal);
}
};
@@ -1481,8 +1479,7 @@ bool StdLibraryFunctionsChecker::evalCall(const CallEvent &Call,
ProgramStateRef State = C.getState();
const LocationContext *LC = C.getLocationContext();
const auto *CE = cast<CallExpr>(Call.getOriginExpr());
- SVal V = C.getSValBuilder().conjureSymbolVal(
- CE, LC, CE->getType().getCanonicalType(), C.blockCount());
+ SVal V = C.getSValBuilder().conjureSymbolVal(Call, C.blockCount());
State = State->BindExpr(CE, LC, V);
C.addTransition(State);