diff options
author | Fangyi Zhou <me@fangyi.io> | 2025-04-25 12:32:38 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-04-25 13:32:38 +0200 |
commit | 317763580fa92a05ba04f4a04677124acb958ea3 (patch) | |
tree | cadcb478767ec933dcfcfcae0eace45c3a0c9bbd /clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp | |
parent | d775b911c90e631f5cc332c07474f7121564e25b (diff) | |
download | llvm-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.cpp | 11 |
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); |