Lines Matching full:state
35 /// AllocationState is a part of the checker specific state together with the
106 /// Check if RetSym evaluates to an error value in the current state.
108 const ProgramState *State,
112 /// Check if RetSym evaluates to a NoErr value in the current state.
114 const ProgramState *State,
116 return definitelyReturnedError(RetSym, State, Builder, true);
222 const ProgramState *State = C.getState();
223 SVal ArgV = State->getSVal(Expr);
227 const MemRegion *V = SM.Retrieve(State->getStore(), *X).getAsRegion();
241 const ProgramState *State,
246 DefinedOrUnknownSVal NoErr = Builder.evalEQ(State, NoErrVal,
248 const ProgramState *ErrState = State->assume(NoErr, noError);
249 if (ErrState == State) {
262 const ProgramState *State = C.getState();
263 State = State->remove<AllocatedData>(AP.first);
264 ExplodedNode *N = C.generateNode(State);
284 const ProgramState *State = C.getState();
286 SVal L = State->getSVal(Callee);
302 if (const AllocationState *AS = State->get<AllocatedData>(V)) {
303 if (!definitelyReturnedError(AS->Region, State, C.getSValBuilder())) {
304 // Remove the value from the state. The new symbol will be added for
306 State = State->remove<AllocatedData>(V);
307 ExplodedNode *N = C.generateNode(State);
334 SVal ArgSVal = State->getSVal(ArgExpr);
352 const AllocationState *AS = State->get<AllocatedData>(ArgSM);
358 // (that would involve tracking all the freed symbols in the checker state).
365 ExplodedNode *N = C.generateNode(State);
402 State = State->remove<AllocatedData>(ArgSM);
403 C.addTransition(State);
412 // from the next state.
413 State = State->remove<AllocatedData>(ArgSM);
424 if (!definitelyDidnotReturnError(AS->Region, State, C.getSValBuilder())) {
425 ExplodedNode *N = C.generateNode(State);
437 C.addTransition(State);
442 const ProgramState *State = C.getState();
444 SVal L = State->getSVal(Callee);
478 SymbolRef RetStatusSymbol = State->getSVal(CE).getAsSymbol();
481 // Track the allocated value in the checker state.
482 State = State->set<AllocatedData>(V, AllocationState(ArgExpr, idx,
484 assert(State);
485 C.addTransition(State);
496 const ProgramState *state = C.getState();
497 const MemRegion *V = state->getSVal(retExpr).getAsRegion();
500 state = state->remove<AllocatedData>(getSymbolForRegion(C, V));
502 // Proceed from the new state.
503 C.addTransition(state);
524 const ProgramState *State = C.getState();
525 AllocatedSetTy ASet = State->get<AllocatedData>();
536 State = State->remove<AllocatedData>(I->first);
539 if (State->getSymVal(I->first) ||
540 definitelyReturnedError(I->second.Region, State, C.getSValBuilder()))
547 // Generate the new, cleaned up state.
548 ExplodedNode *N = C.generateNode(State);
562 const ProgramState *state = B.getState();
563 AllocatedSetTy AS = state->get<AllocatedData>();
573 state = state->remove<AllocatedData>(I->first);
576 if (state->getSymVal(I.getKey()) ||
577 definitelyReturnedError(I->second.Region, state,
584 // If no change, do not generate a new state.
588 ExplodedNode *N = B.generateNode(state);