Lines Matching refs:State

104   void processComparison(CheckerContext &C, ProgramStateRef State,
125 void printState(raw_ostream &Out, ProgramStateRef State, const char *NL,
156 void checkLiveSymbols(ProgramStateRef State, SymbolReaper &SR) const;
162 ProgramStateRef removeIteratorPosition(ProgramStateRef State, const SVal &Val);
163 ProgramStateRef relateSymbols(ProgramStateRef State, SymbolRef Sym1,
197 auto State = C.getState(); in checkPostCall() local
200 if (getIteratorPosition(State, Call.getReturnValue())) in checkPostCall()
205 if (const auto *Pos = getIteratorPosition(State, Call.getArgSVal(0))) { in checkPostCall()
206 State = setIteratorPosition(State, Call.getReturnValue(), *Pos); in checkPostCall()
208 State = removeIteratorPosition(State, Call.getArgSVal(0)); in checkPostCall()
210 C.addTransition(State); in checkPostCall()
225 if (const auto *Pos = getIteratorPosition(State, Call.getArgSVal(i))) { in checkPostCall()
236 auto State = C.getState(); in checkBind() local
237 const auto *Pos = getIteratorPosition(State, Val); in checkBind()
239 State = setIteratorPosition(State, Loc, *Pos); in checkBind()
240 C.addTransition(State); in checkBind()
242 const auto *OldPos = getIteratorPosition(State, Loc); in checkBind()
244 State = removeIteratorPosition(State, Loc); in checkBind()
245 C.addTransition(State); in checkBind()
264 const ProgramStateRef State = C.getState(); in checkPostStmt() local
268 const SVal LVal = State->getSVal(LHS, C.getLocationContext()); in checkPostStmt()
269 const SVal RVal = State->getSVal(RHS, C.getLocationContext()); in checkPostStmt()
272 SVal Result = State->getSVal(BO, C.getLocationContext()); in checkPostStmt()
294 auto State = C.getState(); in checkPostStmt() local
295 const auto *Pos = getIteratorPosition(State, C.getSVal(MTE->getSubExpr())); in checkPostStmt()
298 State = setIteratorPosition(State, C.getSVal(MTE), *Pos); in checkPostStmt()
299 C.addTransition(State); in checkPostStmt()
302 void IteratorModeling::checkLiveSymbols(ProgramStateRef State, in checkLiveSymbols() argument
305 auto RegionMap = State->get<IteratorRegionMap>(); in checkLiveSymbols()
313 auto SymbolMap = State->get<IteratorSymbolMap>(); in checkLiveSymbols()
326 auto State = C.getState(); in checkDeadSymbols() local
328 auto RegionMap = State->get<IteratorRegionMap>(); in checkDeadSymbols()
334 if (!isBoundThroughLazyCompoundVal(State->getEnvironment(), Reg.first)) { in checkDeadSymbols()
335 State = State->remove<IteratorRegionMap>(Reg.first); in checkDeadSymbols()
340 auto SymbolMap = State->get<IteratorSymbolMap>(); in checkDeadSymbols()
343 State = State->remove<IteratorSymbolMap>(Sym.first); in checkDeadSymbols()
347 C.addTransition(State); in checkDeadSymbols()
456 auto State = C.getState(); in handleComparison() local
457 const auto *LPos = getIteratorPosition(State, LVal); in handleComparison()
458 const auto *RPos = getIteratorPosition(State, RVal); in handleComparison()
475 State = assumeNoOverflow(State, Sym, 4); in handleComparison()
479 State = setIteratorPosition(State, LVal, in handleComparison()
481 LPos = getIteratorPosition(State, LVal); in handleComparison()
483 State = setIteratorPosition(State, RVal, in handleComparison()
485 RPos = getIteratorPosition(State, RVal); in handleComparison()
501 State = State->BindExpr(CE, LCtx, RetVal); in handleComparison()
504 processComparison(C, State, LPos->getOffset(), RPos->getOffset(), RetVal, Op); in handleComparison()
508 ProgramStateRef State, SymbolRef Sym1, in processComparison() argument
512 if ((State = relateSymbols(State, Sym1, Sym2, in processComparison()
515 C.addTransition(State); in processComparison()
517 C.generateSink(State, C.getPredecessor()); in processComparison()
526 if (auto StateTrue = relateSymbols(State, Sym1, Sym2, Op == OO_EqualEqual)) { in processComparison()
531 if (auto StateFalse = relateSymbols(State, Sym1, Sym2, Op != OO_EqualEqual)) { in processComparison()
541 auto State = C.getState(); in handleIncrement() local
544 const auto *Pos = getIteratorPosition(State, Iter); in handleIncrement()
549 advancePosition(State, Iter, OO_Plus, in handleIncrement()
558 State = setIteratorPosition(State, Iter, *NewPos); in handleIncrement()
559 State = setIteratorPosition(State, RetVal, Postfix ? *Pos : *NewPos); in handleIncrement()
560 C.addTransition(State); in handleIncrement()
567 auto State = C.getState(); in handleDecrement() local
570 const auto *Pos = getIteratorPosition(State, Iter); in handleDecrement()
575 advancePosition(State, Iter, OO_Minus, in handleDecrement()
584 State = setIteratorPosition(State, Iter, *NewPos); in handleDecrement()
585 State = setIteratorPosition(State, RetVal, Postfix ? *Pos : *NewPos); in handleDecrement()
586 C.addTransition(State); in handleDecrement()
596 auto State = C.getState(); in handleRandomIncrOrDecr() local
598 const auto *Pos = getIteratorPosition(State, Iterator); in handleRandomIncrOrDecr()
605 Val = State->getRawSVal(*LocAmount); in handleRandomIncrOrDecr()
615 auto AdvancedState = advancePosition(State, Iterator, Op, *Value); in handleRandomIncrOrDecr()
621 State = setIteratorPosition(State, TgtVal, *NewPos); in handleRandomIncrOrDecr()
622 C.addTransition(State); in handleRandomIncrOrDecr()
640 ProgramStateRef State = C.getState(); in handlePtrIncrOrDecr() local
641 SVal OldVal = State->getSVal(Iterator, C.getLocationContext()); in handlePtrIncrOrDecr()
643 const IteratorPosition *OldPos = getIteratorPosition(State, OldVal); in handlePtrIncrOrDecr()
649 NewVal = State->getLValue(ElementType, Offset, OldVal); in handlePtrIncrOrDecr()
653 NewVal = State->getLValue(ElementType, NegatedOffset, OldVal); in handlePtrIncrOrDecr()
659 auto AdvancedState = advancePosition(State, OldVal, OK, Offset); in handlePtrIncrOrDecr()
665 ProgramStateRef NewState = setIteratorPosition(State, NewVal, *NewPos); in handlePtrIncrOrDecr()
693 auto State = C.getState(); in assignToContainer() local
695 State = createIteratorPosition(State, RetVal, Cont, CE, LCtx, C.blockCount()); in assignToContainer()
697 C.addTransition(State); in assignToContainer()
730 void IteratorModeling::printState(raw_ostream &Out, ProgramStateRef State, in printState() argument
732 auto SymbolMap = State->get<IteratorSymbolMap>(); in printState()
733 auto RegionMap = State->get<IteratorRegionMap>(); in printState()
777 ProgramStateRef removeIteratorPosition(ProgramStateRef State, const SVal &Val) { in removeIteratorPosition() argument
780 return State->remove<IteratorRegionMap>(Reg); in removeIteratorPosition()
782 return State->remove<IteratorSymbolMap>(Sym); in removeIteratorPosition()
784 return State->remove<IteratorRegionMap>(LCVal->getRegion()); in removeIteratorPosition()
789 ProgramStateRef relateSymbols(ProgramStateRef State, SymbolRef Sym1, in relateSymbols() argument
791 auto &SVB = State->getStateManager().getSValBuilder(); in relateSymbols()
799 SVB.evalBinOp(State, BO_EQ, nonloc::SymbolVal(Sym1), in relateSymbols()
805 auto NewState = State->assume(comparison.castAs<DefinedSVal>(), Equal); in relateSymbols()