Lines Matching defs:State
56 checkRegionChanges(ProgramStateRef State,
61 void printState(raw_ostream &Out, ProgramStateRef State, const char *NL,
63 void checkLiveSymbols(ProgramStateRef State, SymbolReaper &SR) const;
79 bool handleSwap(ProgramStateRef State, SVal First, SVal Second,
82 retrieveOrConjureInnerPtrVal(ProgramStateRef State,
149 bool isNullSmartPtr(const ProgramStateRef State, const MemRegion *ThisRegion) {
150 const auto *InnerPointVal = State->get<TrackedRegionMap>(ThisRegion);
152 !State->assume(InnerPointVal->castAs<DefinedOrUnknownSVal>(), true);
172 static ProgramStateRef updateSwappedRegion(ProgramStateRef State,
176 State = State->set<TrackedRegionMap>(Region, *RegionInnerPointerVal);
178 State = State->remove<TrackedRegionMap>(Region);
180 return State;
279 ProgramStateRef State = C.getState();
296 return handleSwap(State, Call.getArgSVal(0), Call.getArgSVal(1), C);
313 State = State->set<TrackedRegionMap>(ThisRegion, PtrVal);
314 State = State->assume(PtrVal, true);
332 auto &Engine = State->getStateManager().getOwningEngine();
333 State = Engine.updateObjectsUnderConstruction(
334 *ThisRegionOpt, nullptr, State, C.getLocationContext(),
339 C.addTransition(State);
358 if (!move::isMovedFrom(State, ThisR)) {
365 C.addTransition(State->BindExpr(
391 State = State->set<TrackedRegionMap>(ThisRegion, NullVal);
394 State, C.getNoteTag([ThisRegion](PathSensitiveBugReport &BR,
408 State = State->set<TrackedRegionMap>(ThisRegion, ArgVal);
410 C.addTransition(State, C.getNoteTag([ThisRegion, TrackingExpr,
440 ProgramStateRef State, const MemRegion *ThisRegion, const Expr *E,
442 const auto *Ptr = State->get<TrackedRegionMap>(ThisRegion);
444 return {*Ptr, State};
447 State = State->set<TrackedRegionMap>(ThisRegion, Val);
448 return {Val, State};
471 auto makeSValFor = [&C, this](ProgramStateRef State, const Expr *E,
474 return {S, State};
480 return retrieveOrConjureInnerPtrVal(State, Reg, E, Type, C);
491 ProgramStateRef State = C.getState();
494 std::tie(FirstPtrVal, State) = makeSValFor(State, FirstExpr, First);
495 std::tie(SecondPtrVal, State) = makeSValFor(State, SecondExpr, Second);
498 auto RetVal = Bldr.evalBinOp(State, BOK, FirstPtrVal, SecondPtrVal,
504 State->assume(*RetVal.getAs<DefinedOrUnknownSVal>());
512 C.addTransition(State->BindExpr(ResultExpr, LCtx, RetVal));
527 ProgramStateRef State = C.getState();
532 State =
533 State->invalidateRegions({StreamThisRegion}, Call.getOriginExpr(),
535 State =
536 State->BindExpr(Call.getOriginExpr(), C.getLocationContext(), StreamVal);
537 C.addTransition(State);
543 ProgramStateRef State = C.getState();
545 TrackedRegionMapTy TrackedRegions = State->get<TrackedRegionMap>();
551 State = State->remove<TrackedRegionMap>(Region);
553 C.addTransition(State);
556 void SmartPtrModeling::printState(raw_ostream &Out, ProgramStateRef State,
558 TrackedRegionMapTy RS = State->get<TrackedRegionMap>();
564 if (smartptr::isNullSmartPtr(State, I.first))
574 ProgramStateRef State, const InvalidatedSymbols *Invalidated,
578 TrackedRegionMapTy RegionMap = State->get<TrackedRegionMap>();
580 State->get_context<TrackedRegionMap>();
584 return State->set<TrackedRegionMap>(RegionMap);
587 void SmartPtrModeling::checkLiveSymbols(ProgramStateRef State,
590 TrackedRegionMapTy TrackedRegions = State->get<TrackedRegionMap>();
600 ProgramStateRef State = C.getState();
611 State = State->set<TrackedRegionMap>(ThisRegion, Call.getArgSVal(0));
614 State, C.getNoteTag([ThisRegion, TrackingExpr](PathSensitiveBugReport &BR,
630 ProgramStateRef State = C.getState();
639 const auto *InnerPointVal = State->get<TrackedRegionMap>(ThisRegion);
642 State = State->BindExpr(Call.getOriginExpr(), C.getLocationContext(),
648 State = State->set<TrackedRegionMap>(ThisRegion, ValueToUpdate);
650 C.addTransition(State, C.getNoteTag([ThisRegion](PathSensitiveBugReport &BR,
671 auto State = C.getState();
672 handleSwap(State, IC->getCXXThisVal(), Call.getArgSVal(0), C);
675 bool SmartPtrModeling::handleSwap(ProgramStateRef State, SVal First,
684 const auto *FirstInnerPtrVal = State->get<TrackedRegionMap>(FirstThisRegion);
686 State->get<TrackedRegionMap>(SecondThisRegion);
688 State = updateSwappedRegion(State, FirstThisRegion, SecondInnerPtrVal);
689 State = updateSwappedRegion(State, SecondThisRegion, FirstInnerPtrVal);
691 C.addTransition(State, C.getNoteTag([FirstThisRegion, SecondThisRegion](
714 ProgramStateRef State = C.getState();
724 std::tie(InnerPointerVal, State) = retrieveOrConjureInnerPtrVal(
725 State, ThisRegion, Call.getOriginExpr(), Call.getResultType(), C);
726 State = State->BindExpr(Call.getOriginExpr(), C.getLocationContext(),
729 C.addTransition(State);
734 ProgramStateRef State = C.getState();
754 State = State->set<TrackedRegionMap>(ThisRegion, NullVal);
755 C.addTransition(State, C.getNoteTag([ThisRegion](PathSensitiveBugReport &BR,
782 ProgramStateRef State = C.getState();
784 const auto *OtherInnerPtr = State->get<TrackedRegionMap>(OtherSmartPtrRegion);
786 State = State->set<TrackedRegionMap>(ThisRegion, *OtherInnerPtr);
789 State = State->set<TrackedRegionMap>(OtherSmartPtrRegion, NullVal);
793 State,
816 State = State->remove<TrackedRegionMap>(ThisRegion);
817 State = State->set<TrackedRegionMap>(OtherSmartPtrRegion, NullVal);
818 C.addTransition(State, C.getNoteTag([OtherSmartPtrRegion,
837 ProgramStateRef State = C.getState();
845 if (const auto *InnerValPtr = State->get<TrackedRegionMap>(ThisRegion)) {
857 State = State->set<TrackedRegionMap>(ThisRegion, InnerPointerVal);
860 if (State->isNull(InnerPointerVal).isConstrainedTrue()) {
861 State = State->BindExpr(CallExpr, C.getLocationContext(),
864 C.addTransition(State);
866 } else if (State->isNonNull(InnerPointerVal).isConstrainedTrue()) {
867 State = State->BindExpr(CallExpr, C.getLocationContext(),
870 C.addTransition(State);
872 } else if (move::isMovedFrom(State, ThisRegion)) {
874 State->BindExpr(CallExpr, C.getLocationContext(),
880 State->assume(InnerPointerVal.castAs<DefinedOrUnknownSVal>());