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, 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()
312 auto SymbolMap = State->get<IteratorSymbolMap>(); in checkLiveSymbols()
323 auto State = C.getState(); in checkDeadSymbols() local
325 auto RegionMap = State->get<IteratorRegionMap>(); in checkDeadSymbols()
331 if (!isBoundThroughLazyCompoundVal(State->getEnvironment(), Reg.first)) { in checkDeadSymbols()
332 State = State->remove<IteratorRegionMap>(Reg.first); in checkDeadSymbols()
337 auto SymbolMap = State->get<IteratorSymbolMap>(); in checkDeadSymbols()
340 State = State->remove<IteratorSymbolMap>(Sym.first); in checkDeadSymbols()
344 C.addTransition(State); in checkDeadSymbols()
452 auto State = C.getState(); in handleComparison() local
453 const auto *LPos = getIteratorPosition(State, LVal); in handleComparison()
454 const auto *RPos = getIteratorPosition(State, RVal); in handleComparison()
471 State = assumeNoOverflow(State, Sym, 4); in handleComparison()
475 State = setIteratorPosition(State, LVal, in handleComparison()
477 LPos = getIteratorPosition(State, LVal); in handleComparison()
479 State = setIteratorPosition(State, RVal, in handleComparison()
481 RPos = getIteratorPosition(State, RVal); in handleComparison()
497 State = State->BindExpr(CE, LCtx, RetVal); in handleComparison()
500 processComparison(C, State, LPos->getOffset(), RPos->getOffset(), RetVal, Op); in handleComparison()
504 ProgramStateRef State, SymbolRef Sym1, in processComparison() argument
508 if ((State = relateSymbols(State, Sym1, Sym2, in processComparison()
511 C.addTransition(State); in processComparison()
513 C.generateSink(State, C.getPredecessor()); in processComparison()
522 if (auto StateTrue = relateSymbols(State, Sym1, Sym2, Op == OO_EqualEqual)) { in processComparison()
527 if (auto StateFalse = relateSymbols(State, Sym1, Sym2, Op != OO_EqualEqual)) { in processComparison()
537 auto State = C.getState(); in handleIncrement() local
540 const auto *Pos = getIteratorPosition(State, Iter); in handleIncrement()
545 advancePosition(State, Iter, OO_Plus, in handleIncrement()
554 State = setIteratorPosition(State, Iter, *NewPos); in handleIncrement()
555 State = setIteratorPosition(State, RetVal, Postfix ? *Pos : *NewPos); in handleIncrement()
556 C.addTransition(State); in handleIncrement()
563 auto State = C.getState(); in handleDecrement() local
566 const auto *Pos = getIteratorPosition(State, Iter); in handleDecrement()
571 advancePosition(State, Iter, OO_Minus, in handleDecrement()
580 State = setIteratorPosition(State, Iter, *NewPos); in handleDecrement()
581 State = setIteratorPosition(State, RetVal, Postfix ? *Pos : *NewPos); in handleDecrement()
582 C.addTransition(State); in handleDecrement()
591 auto State = C.getState(); in handleRandomIncrOrDecr() local
593 const auto *Pos = getIteratorPosition(State, Iterator); in handleRandomIncrOrDecr()
600 Val = State->getRawSVal(*LocAmount); in handleRandomIncrOrDecr()
610 auto AdvancedState = advancePosition(State, Iterator, Op, *Value); in handleRandomIncrOrDecr()
616 State = setIteratorPosition(State, TgtVal, *NewPos); in handleRandomIncrOrDecr()
617 C.addTransition(State); in handleRandomIncrOrDecr()
635 ProgramStateRef State = C.getState(); in handlePtrIncrOrDecr() local
636 SVal OldVal = State->getSVal(Iterator, C.getLocationContext()); in handlePtrIncrOrDecr()
638 const IteratorPosition *OldPos = getIteratorPosition(State, OldVal); in handlePtrIncrOrDecr()
644 NewVal = State->getLValue(ElementType, Offset, OldVal); in handlePtrIncrOrDecr()
648 NewVal = State->getLValue(ElementType, NegatedOffset, OldVal); in handlePtrIncrOrDecr()
654 auto AdvancedState = advancePosition(State, OldVal, OK, Offset); in handlePtrIncrOrDecr()
660 ProgramStateRef NewState = setIteratorPosition(State, NewVal, *NewPos); in handlePtrIncrOrDecr()
688 auto State = C.getState(); in assignToContainer() local
690 State = createIteratorPosition(State, RetVal, Cont, CE, LCtx, C.blockCount()); in assignToContainer()
692 C.addTransition(State); in assignToContainer()
725 void IteratorModeling::printState(raw_ostream &Out, ProgramStateRef State, in printState() argument
727 auto SymbolMap = State->get<IteratorSymbolMap>(); in printState()
728 auto RegionMap = State->get<IteratorRegionMap>(); in printState()
772 ProgramStateRef removeIteratorPosition(ProgramStateRef State, SVal Val) { in removeIteratorPosition() argument
775 return State->remove<IteratorRegionMap>(Reg); in removeIteratorPosition()
777 return State->remove<IteratorSymbolMap>(Sym); in removeIteratorPosition()
779 return State->remove<IteratorRegionMap>(LCVal->getRegion()); in removeIteratorPosition()
784 ProgramStateRef relateSymbols(ProgramStateRef State, SymbolRef Sym1, in relateSymbols() argument
786 auto &SVB = State->getStateManager().getSValBuilder(); in relateSymbols()
794 SVB.evalBinOp(State, BO_EQ, nonloc::SymbolVal(Sym1), in relateSymbols()
800 auto NewState = State->assume(comparison.castAs<DefinedSVal>(), Equal); in relateSymbols()