[PATCH] D73350: Small StreamChecker refactoring (NFC).
Balázs Kéri via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Jan 24 06:59:04 PST 2020
balazske created this revision.
Herald added subscribers: cfe-commits, gamesh411, Szelethus, dkrupp.
Herald added a project: clang.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D73350
Files:
clang/lib/StaticAnalyzer/Checkers/StreamChecker.cpp
Index: clang/lib/StaticAnalyzer/Checkers/StreamChecker.cpp
===================================================================
--- clang/lib/StaticAnalyzer/Checkers/StreamChecker.cpp
+++ clang/lib/StaticAnalyzer/Checkers/StreamChecker.cpp
@@ -135,31 +135,32 @@
}
void StreamChecker::evalFopen(const CallEvent &Call, CheckerContext &C) const {
- ProgramStateRef state = C.getState();
- SValBuilder &svalBuilder = C.getSValBuilder();
+ ProgramStateRef State = C.getState();
+ SValBuilder &SVB = C.getSValBuilder();
const LocationContext *LCtx = C.getPredecessor()->getLocationContext();
+
auto *CE = dyn_cast_or_null<CallExpr>(Call.getOriginExpr());
if (!CE)
return;
DefinedSVal RetVal =
- svalBuilder.conjureSymbolVal(nullptr, CE, LCtx, C.blockCount())
+ SVB.conjureSymbolVal(nullptr, CE, LCtx, C.blockCount())
.castAs<DefinedSVal>();
- state = state->BindExpr(CE, C.getLocationContext(), RetVal);
+ SymbolRef RetSym = RetVal.getAsSymbol();
+ assert(RetSym && "RetVal must be a symbol here.");
+
+ State = State->BindExpr(CE, C.getLocationContext(), RetVal);
- ConstraintManager &CM = C.getConstraintManager();
// Bifurcate the state into two: one with a valid FILE* pointer, the other
// with a NULL.
- ProgramStateRef stateNotNull, stateNull;
- std::tie(stateNotNull, stateNull) = CM.assumeDual(state, RetVal);
+ ProgramStateRef StateNotNull, StateNull;
+ std::tie(StateNotNull, StateNull) = C.getConstraintManager().assumeDual(State, RetVal);
- SymbolRef Sym = RetVal.getAsSymbol();
- assert(Sym && "RetVal must be a symbol here.");
- stateNotNull = stateNotNull->set<StreamMap>(Sym, StreamState::getOpened());
- stateNull = stateNull->set<StreamMap>(Sym, StreamState::getOpenFailed());
+ StateNotNull = StateNotNull->set<StreamMap>(RetSym, StreamState::getOpened());
+ StateNull = StateNull->set<StreamMap>(RetSym, StreamState::getOpenFailed());
- C.addTransition(stateNotNull);
- C.addTransition(stateNull);
+ C.addTransition(StateNotNull);
+ C.addTransition(StateNull);
}
void StreamChecker::evalFreopen(const CallEvent &Call,
@@ -228,8 +229,6 @@
if (!C.isDifferent() && StateChanged)
C.addTransition(State);
-
- return;
}
void StreamChecker::checkArgNullStream(const CallEvent &Call, CheckerContext &C,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D73350.240181.patch
Type: text/x-patch
Size: 2307 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200124/e491e11c/attachment-0001.bin>
More information about the cfe-commits
mailing list