Lines Matching full:state
29 const RefVal *getRefBinding(ProgramStateRef State, SymbolRef Sym) { in getRefBinding() argument
30 return State->get<RefBindings>(Sym); in getRefBinding()
37 static ProgramStateRef setRefBinding(ProgramStateRef State, SymbolRef Sym, in setRefBinding() argument
40 return State->set<RefBindings>(Sym, Val); in setRefBinding()
43 static ProgramStateRef removeRefBinding(ProgramStateRef State, SymbolRef Sym) { in removeRefBinding() argument
44 return State->remove<RefBindings>(Sym); in removeRefBinding()
131 ProgramStateRef state; member in __anonb4992fd20111::StopTrackingCallback
133 StopTrackingCallback(ProgramStateRef st) : state(std::move(st)) {} in StopTrackingCallback()
134 ProgramStateRef getState() const { return state; } in getState()
137 state = removeRefBinding(state, sym); in VisitSymbol()
155 ProgramStateRef state = C.getState(); in checkPostStmt() local
177 state = state->scanReachableSymbols<StopTrackingCallback>(Regions).getState(); in checkPostStmt()
178 C.addTransition(state); in checkPostStmt()
209 ProgramStateRef state = C.getState(); in checkPostStmt() local
213 const RefVal* T = getRefBinding(state, Sym); in checkPostStmt()
218 state = updateSymbol(state, Sym, *T, AE, hasErr, C); in checkPostStmt()
225 C.addTransition(state); in checkPostStmt()
230 ProgramStateRef state = C.getState(); in processObjCLiterals() local
235 if (const RefVal* T = getRefBinding(state, sym)) { in processObjCLiterals()
237 state = updateSymbol(state, sym, *T, in processObjCLiterals()
240 processNonLeakError(state, Child->getSourceRange(), hasErr, sym, C); in processObjCLiterals()
249 state->getSVal(Ex, pred->getLocationContext()).getAsSymbol()) { in processObjCLiterals()
251 state = setRefBinding(state, sym, in processObjCLiterals()
255 C.addTransition(state); in processObjCLiterals()
273 ProgramStateRef State = Pred->getState(); in checkPostStmt() local
277 State = setRefBinding(State, Sym, in checkPostStmt()
281 C.addTransition(State); in checkPostStmt()
290 ProgramStateRef State = C.getState(); in checkPostStmt() local
291 SymbolRef Sym = State->getSVal(*IVarLoc).getAsSymbol(); in checkPostStmt()
308 ConstraintManager &CMgr = State->getConstraintManager(); in checkPostStmt()
309 if (CMgr.isNull(State, Sym).isConstrainedTrue()) in checkPostStmt()
312 if (const RefVal *RV = getRefBinding(State, Sym)) { in checkPostStmt()
321 C.addTransition(setRefBinding(State, Sym, RV->withIvarAccess())); in checkPostStmt()
329 C.addTransition(setRefBinding(State, Sym, PlusZero)); in checkPostStmt()
333 State = setRefBinding(State, Sym, PlusZero.withIvarAccess()); in checkPostStmt()
334 C.addTransition(State); in checkPostStmt()
450 ProgramStateRef state = C.getState(); in processSummaryOfInlined() local
458 if (const RefVal *T = getRefBinding(state, Sym)) in processSummaryOfInlined()
463 state = removeRefBinding(state, Sym); in processSummaryOfInlined()
471 state = removeRefBinding(state, Sym); in processSummaryOfInlined()
481 state = removeRefBinding(state, Sym); in processSummaryOfInlined()
484 C.addTransition(state); in processSummaryOfInlined()
520 updateOutParameters(ProgramStateRef State, const RetainSummary &Summ, in updateOutParameters() argument
535 ProgramStateRef AssumeNonZeroReturn = State; in updateOutParameters()
536 ProgramStateRef AssumeZeroReturn = State; in updateOutParameters()
542 return {State}; in updateOutParameters()
559 SVal PointeeVal = State->getSVal(ArgRegion); in updateOutParameters()
607 ProgramStateRef state = C.getState(); in checkSummary() local
623 if (const RefVal *T = getRefBinding(state, Sym)) { in checkSummary()
628 state = updateSymbol(state, Sym, *T, Effect, hasErr, C); in checkSummary()
645 if (const RefVal *T = getRefBinding(state, Sym)) { in checkSummary()
647 state = updateSymbol(state, Sym, *T, in checkSummary()
659 if (const RefVal *T = getRefBinding(state, Sym)) { in checkSummary()
660 state = updateSymbol(state, Sym, *T, Summ.getThisEffect(), in checkSummary()
673 processNonLeakError(state, ErrorRange, hasErr, ErrorSym, C); in checkSummary()
695 state = setRefBinding(state, Sym, *updatedRefVal); in checkSummary()
699 updateOutParameters(state, Summ, CallOrMsg); in checkSummary()
710 ProgramStateRef RetainCountChecker::updateSymbol(ProgramStateRef state, in updateSymbol() argument
736 return setRefBinding(state, sym, V); in updateSymbol()
745 "not have ref state."); in updateSymbol()
750 llvm_unreachable("Invalid RefVal state for an explicit dealloc."); in updateSymbol()
752 // The object immediately transitions to the released state. in updateSymbol()
755 return setRefBinding(state, sym, V); in updateSymbol()
772 return state; in updateSymbol()
781 return removeRefBinding(state, sym); in updateSymbol()
786 llvm_unreachable("Invalid RefVal state for a retain."); in updateSymbol()
800 llvm_unreachable("Invalid RefVal state for a release."); in updateSymbol()
812 return removeRefBinding(state, sym); in updateSymbol()
821 return removeRefBinding(state, sym); in updateSymbol()
828 return removeRefBinding(state, sym); in updateSymbol()
838 return setRefBinding(state, sym, V); in updateSymbol()
890 ProgramStateRef state = C.getState(); in evalCall() local
925 SVal RetVal = state->getSVal(BindReturnTo, LCtx); in evalCall()
939 state = state->BindExpr(CE, LCtx, RetVal, /*Invalidate=*/false); in evalCall()
954 state = state->assume(*L, /*assumption=*/true); in evalCall()
959 C.addTransition(state); in evalCall()
982 ProgramStateRef state = C.getState(); in processReturn() local
985 SymbolRef Sym = state->getSValAsScalarOrLoc(RetE, C.getLocationContext()) in processReturn()
991 const RefVal *T = getRefBinding(state, Sym); in processReturn()
1023 state = setRefBinding(state, Sym, X); in processReturn()
1024 Pred = C.addTransition(state); in processReturn()
1026 // At this point we have updated the state properly. in processReturn()
1036 state = handleAutoreleaseCounts(state, Pred, &AutoreleaseTag, C, Sym, X, S); in processReturn()
1039 if (!state) in processReturn()
1043 T = getRefBinding(state, Sym); in processReturn()
1063 return checkReturnWithRetEffect(S, C, Pred, RE, X, Sym, state); in processReturn()
1071 ProgramStateRef state) const { in checkReturnWithRetEffect()
1091 state = setRefBinding(state, Sym, X); in checkReturnWithRetEffect()
1094 ExplodedNode *N = C.addTransition(state, Pred, &ReturnOwnLeakTag); in checkReturnWithRetEffect()
1110 state = setRefBinding(state, Sym, in checkReturnWithRetEffect()
1115 state = setRefBinding(state, Sym, X ^ RefVal::ErrorReturnedNotOwned); in checkReturnWithRetEffect()
1120 ExplodedNode *N = C.addTransition(state, Pred, &ReturnNotOwnedTag); in checkReturnWithRetEffect()
1139 ProgramStateRef state = C.getState(); in checkBind() local
1145 state = state->scanReachableSymbols<StopTrackingCallback>(val).getState(); in checkBind()
1146 C.addTransition(state); in checkBind()
1150 ProgramStateRef RetainCountChecker::evalAssume(ProgramStateRef state, in evalAssume() argument
1159 RefBindingsTy B = state->get<RefBindings>(); in evalAssume()
1162 return state; in evalAssume()
1165 RefBindingsTy::Factory &RefBFactory = state->get_context<RefBindings>(); in evalAssume()
1166 ConstraintManager &CMgr = state->getConstraintManager(); in evalAssume()
1170 ConditionTruthVal AllocFailed = CMgr.isNull(state, I.first); in evalAssume()
1178 state = state->set<RefBindings>(B); in evalAssume()
1180 return state; in evalAssume()
1184 ProgramStateRef state, const InvalidatedSymbols *invalidated, in checkRegionChanges() argument
1189 return state; in checkRegionChanges()
1201 state = removeRefBinding(state, sym); in checkRegionChanges()
1203 return state; in checkRegionChanges()
1207 RetainCountChecker::handleAutoreleaseCounts(ProgramStateRef state, in handleAutoreleaseCounts() argument
1218 return state; in handleAutoreleaseCounts()
1247 return setRefBinding(state, Sym, V); in handleAutoreleaseCounts()
1257 return state; in handleAutoreleaseCounts()
1262 state = setRefBinding(state, Sym, V); in handleAutoreleaseCounts()
1264 ExplodedNode *N = Ctx.generateSink(state, Pred, Tag); in handleAutoreleaseCounts()
1285 RetainCountChecker::handleSymbolDeath(ProgramStateRef state, in handleSymbolDeath() argument
1306 return removeRefBinding(state, sid); in handleSymbolDeath()
1309 return setRefBinding(state, sid, V ^ RefVal::ErrorLeak); in handleSymbolDeath()
1313 RetainCountChecker::processLeaks(ProgramStateRef state, in processLeaks() argument
1318 ExplodedNode *N = Ctx.addTransition(state, Pred); in processLeaks()
1343 ProgramStateRef state = Ctx.getState(); in checkBeginFunction() local
1349 SymbolRef Sym = state->getSVal(state->getRegion(Param, LCtx)).getAsSymbol(); in checkBeginFunction()
1359 state = setRefBinding(state, Sym, NewVal); in checkBeginFunction()
1364 Ctx.addTransition(state); in checkBeginFunction()
1371 // Created state cached out. in checkEndFunction()
1376 ProgramStateRef state = Pred->getState(); in checkEndFunction() local
1377 RefBindingsTy B = state->get<RefBindings>(); in checkEndFunction()
1387 state = handleAutoreleaseCounts(state, Pred, /*Tag=*/nullptr, Ctx, in checkEndFunction()
1389 if (!state) in checkEndFunction()
1400 B = state->get<RefBindings>(); in checkEndFunction()
1404 state = handleSymbolDeath(state, I.first, I.second, Leaked); in checkEndFunction()
1406 processLeaks(state, Leaked, Ctx, Pred); in checkEndFunction()
1413 ProgramStateRef state = C.getState(); in checkDeadSymbols() local
1417 for (const auto &I: state->get<RefBindings>()) { in checkDeadSymbols()
1422 state = handleAutoreleaseCounts(state, Pred, &Tag, C, Sym, V); in checkDeadSymbols()
1423 if (!state) in checkDeadSymbols()
1426 // Fetch the new reference count from the state, and use it to handle in checkDeadSymbols()
1428 state = handleSymbolDeath(state, Sym, *getRefBinding(state, Sym), Leaked); in checkDeadSymbols()
1433 C.addTransition(state); in checkDeadSymbols()
1437 Pred = processLeaks(state, Leaked, C, Pred); in checkDeadSymbols()
1445 RefBindingsTy::Factory &F = state->get_context<RefBindings>(); in checkDeadSymbols()
1446 RefBindingsTy B = state->get<RefBindings>(); in checkDeadSymbols()
1451 state = state->set<RefBindings>(B); in checkDeadSymbols()
1452 C.addTransition(state, Pred); in checkDeadSymbols()
1455 void RetainCountChecker::printState(raw_ostream &Out, ProgramStateRef State, in printState() argument
1458 RefBindingsTy B = State->get<RefBindings>(); in printState()