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