Lines Matching refs:State

103   void processComparison(CheckerContext &C, ProgramStateRef State,
124 void printState(raw_ostream &Out, ProgramStateRef State, const char *NL,
157 void checkLiveSymbols(ProgramStateRef State, SymbolReaper &SR) const;
163 ProgramStateRef removeIteratorPosition(ProgramStateRef State, const SVal &Val);
164 ProgramStateRef relateSymbols(ProgramStateRef State, SymbolRef Sym1,
198 auto State = C.getState(); in checkPostCall() local
201 if (getIteratorPosition(State, Call.getReturnValue())) in checkPostCall()
206 if (const auto *Pos = getIteratorPosition(State, Call.getArgSVal(0))) { in checkPostCall()
207 State = setIteratorPosition(State, Call.getReturnValue(), *Pos); in checkPostCall()
209 State = removeIteratorPosition(State, Call.getArgSVal(0)); in checkPostCall()
211 C.addTransition(State); in checkPostCall()
226 if (const auto *Pos = getIteratorPosition(State, Call.getArgSVal(i))) { in checkPostCall()
237 auto State = C.getState(); in checkBind() local
238 const auto *Pos = getIteratorPosition(State, Val); in checkBind()
240 State = setIteratorPosition(State, Loc, *Pos); in checkBind()
241 C.addTransition(State); in checkBind()
243 const auto *OldPos = getIteratorPosition(State, Loc); in checkBind()
245 State = removeIteratorPosition(State, Loc); in checkBind()
246 C.addTransition(State); in checkBind()
265 const ProgramStateRef State = C.getState(); in checkPostStmt() local
269 const SVal LVal = State->getSVal(LHS, C.getLocationContext()); in checkPostStmt()
270 const SVal RVal = State->getSVal(RHS, C.getLocationContext()); in checkPostStmt()
273 SVal Result = State->getSVal(BO, C.getLocationContext()); in checkPostStmt()
295 auto State = C.getState(); in checkPostStmt() local
296 const auto *Pos = getIteratorPosition(State, C.getSVal(MTE->getSubExpr())); in checkPostStmt()
299 State = setIteratorPosition(State, C.getSVal(MTE), *Pos); in checkPostStmt()
300 C.addTransition(State); in checkPostStmt()
303 void IteratorModeling::checkLiveSymbols(ProgramStateRef State, in checkLiveSymbols() argument
306 auto RegionMap = State->get<IteratorRegionMap>(); in checkLiveSymbols()
314 auto SymbolMap = State->get<IteratorSymbolMap>(); in checkLiveSymbols()
327 auto State = C.getState(); in checkDeadSymbols() local
329 auto RegionMap = State->get<IteratorRegionMap>(); in checkDeadSymbols()
335 if (!isBoundThroughLazyCompoundVal(State->getEnvironment(), Reg.first)) { in checkDeadSymbols()
336 State = State->remove<IteratorRegionMap>(Reg.first); in checkDeadSymbols()
341 auto SymbolMap = State->get<IteratorSymbolMap>(); in checkDeadSymbols()
344 State = State->remove<IteratorSymbolMap>(Sym.first); in checkDeadSymbols()
348 C.addTransition(State); in checkDeadSymbols()
457 auto State = C.getState(); in handleComparison() local
458 const auto *LPos = getIteratorPosition(State, LVal); in handleComparison()
459 const auto *RPos = getIteratorPosition(State, RVal); in handleComparison()
476 State = assumeNoOverflow(State, Sym, 4); in handleComparison()
480 State = setIteratorPosition(State, LVal, in handleComparison()
482 LPos = getIteratorPosition(State, LVal); in handleComparison()
484 State = setIteratorPosition(State, RVal, in handleComparison()
486 RPos = getIteratorPosition(State, RVal); in handleComparison()
502 State = State->BindExpr(CE, LCtx, RetVal); in handleComparison()
505 processComparison(C, State, LPos->getOffset(), RPos->getOffset(), RetVal, Op); in handleComparison()
509 ProgramStateRef State, SymbolRef Sym1, in processComparison() argument
513 if ((State = relateSymbols(State, Sym1, Sym2, in processComparison()
516 C.addTransition(State); in processComparison()
518 C.generateSink(State, C.getPredecessor()); in processComparison()
527 if (auto StateTrue = relateSymbols(State, Sym1, Sym2, Op == OO_EqualEqual)) { in processComparison()
532 if (auto StateFalse = relateSymbols(State, Sym1, Sym2, Op != OO_EqualEqual)) { in processComparison()
542 auto State = C.getState(); in handleIncrement() local
545 const auto *Pos = getIteratorPosition(State, Iter); in handleIncrement()
550 advancePosition(State, Iter, OO_Plus, in handleIncrement()
559 State = setIteratorPosition(State, Iter, *NewPos); in handleIncrement()
560 State = setIteratorPosition(State, RetVal, Postfix ? *Pos : *NewPos); in handleIncrement()
561 C.addTransition(State); in handleIncrement()
568 auto State = C.getState(); in handleDecrement() local
571 const auto *Pos = getIteratorPosition(State, Iter); in handleDecrement()
576 advancePosition(State, Iter, OO_Minus, in handleDecrement()
585 State = setIteratorPosition(State, Iter, *NewPos); in handleDecrement()
586 State = setIteratorPosition(State, RetVal, Postfix ? *Pos : *NewPos); in handleDecrement()
587 C.addTransition(State); in handleDecrement()
597 auto State = C.getState(); in handleRandomIncrOrDecr() local
599 const auto *Pos = getIteratorPosition(State, Iterator); in handleRandomIncrOrDecr()
606 Val = State->getRawSVal(*LocAmount); in handleRandomIncrOrDecr()
616 auto AdvancedState = advancePosition(State, Iterator, Op, *Value); in handleRandomIncrOrDecr()
622 State = setIteratorPosition(State, TgtVal, *NewPos); in handleRandomIncrOrDecr()
623 C.addTransition(State); in handleRandomIncrOrDecr()
641 ProgramStateRef State = C.getState(); in handlePtrIncrOrDecr() local
642 SVal OldVal = State->getSVal(Iterator, C.getLocationContext()); in handlePtrIncrOrDecr()
644 const IteratorPosition *OldPos = getIteratorPosition(State, OldVal); in handlePtrIncrOrDecr()
650 NewVal = State->getLValue(ElementType, Offset, OldVal); in handlePtrIncrOrDecr()
654 NewVal = State->getLValue(ElementType, NegatedOffset, OldVal); in handlePtrIncrOrDecr()
660 auto AdvancedState = advancePosition(State, OldVal, OK, Offset); in handlePtrIncrOrDecr()
666 ProgramStateRef NewState = setIteratorPosition(State, NewVal, *NewPos); in handlePtrIncrOrDecr()
694 auto State = C.getState(); in assignToContainer() local
696 State = createIteratorPosition(State, RetVal, Cont, CE, LCtx, C.blockCount()); in assignToContainer()
698 C.addTransition(State); in assignToContainer()
731 void IteratorModeling::printState(raw_ostream &Out, ProgramStateRef State, in printState() argument
733 auto SymbolMap = State->get<IteratorSymbolMap>(); in printState()
734 auto RegionMap = State->get<IteratorRegionMap>(); in printState()
778 ProgramStateRef removeIteratorPosition(ProgramStateRef State, const SVal &Val) { in removeIteratorPosition() argument
781 return State->remove<IteratorRegionMap>(Reg); in removeIteratorPosition()
783 return State->remove<IteratorSymbolMap>(Sym); in removeIteratorPosition()
785 return State->remove<IteratorRegionMap>(LCVal->getRegion()); in removeIteratorPosition()
790 ProgramStateRef relateSymbols(ProgramStateRef State, SymbolRef Sym1, in relateSymbols() argument
792 auto &SVB = State->getStateManager().getSValBuilder(); in relateSymbols()
800 SVB.evalBinOp(State, BO_EQ, nonloc::SymbolVal(Sym1), in relateSymbols()
806 auto NewState = State->assume(comparison.castAs<DefinedSVal>(), Equal); in relateSymbols()