Lines Matching refs:Env

228 const Formula &forceBoolValue(Environment &Env, const Expr &Expr) {  in forceBoolValue()  argument
229 auto *Value = Env.get<BoolValue>(Expr); in forceBoolValue()
233 Value = &Env.makeAtomicBoolValue(); in forceBoolValue()
234 Env.setValue(Expr, *Value); in forceBoolValue()
249 Environment &Env) { in setHasValue() argument
250 Env.setValue(locForHasValue(OptionalLoc), HasValueVal); in setHasValue()
257 BoolValue &HasValueVal, Environment &Env) { in createOptionalValue() argument
258 auto &OptionalVal = Env.create<RecordValue>(Loc); in createOptionalValue()
259 Env.setValue(Loc, OptionalVal); in createOptionalValue()
260 setHasValue(Loc, HasValueVal, Env); in createOptionalValue()
266 BoolValue *getHasValue(Environment &Env, RecordStorageLocation *OptionalLoc) { in getHasValue() argument
270 auto *HasValueVal = Env.get<BoolValue>(HasValueLoc); in getHasValue()
272 HasValueVal = &Env.makeAtomicBoolValue(); in getHasValue()
273 Env.setValue(HasValueLoc, *HasValueVal); in getHasValue()
303 const Environment &Env) { in getLocBehindPossiblePointer() argument
305 if (auto *PointerVal = dyn_cast_or_null<PointerValue>(Env.getValue(E))) in getLocBehindPossiblePointer()
309 return Env.getStorageLocation(E); in getLocBehindPossiblePointer()
315 getLocBehindPossiblePointer(*ObjectExpr, State.Env))) { in transferUnwrapCall()
316 if (State.Env.getStorageLocation(*UnwrapExpr) == nullptr) in transferUnwrapCall()
317 State.Env.setStorageLocation(*UnwrapExpr, locForValue(*OptionalLoc)); in transferUnwrapCall()
324 getLocBehindPossiblePointer(*ObjectExpr, State.Env))) in transferArrowOpCall()
325 State.Env.setValue( in transferArrowOpCall()
326 *UnwrapExpr, State.Env.create<PointerValue>(locForValue(*OptionalLoc))); in transferArrowOpCall()
332 State.Env.setValue( in transferMakeOptionalCall()
333 *E, createOptionalValue(State.Env.getResultObjectLocation(*E), in transferMakeOptionalCall()
334 State.Env.getBoolLiteralValue(true), State.Env)); in transferMakeOptionalCall()
341 State.Env, getImplicitObjectLocation(*CallExpr, State.Env))) { in transferOptionalHasValueCall()
342 State.Env.setValue(*CallExpr, *HasValueVal); in transferOptionalHasValueCall()
351 const Formula &(*ModelPred)(Environment &Env, const Formula &ExprVal, in transferValueOrImpl() argument
353 auto &Env = State.Env; in transferValueOrImpl() local
359 getHasValue(State.Env, getImplicitObjectLocation(*MCE, State.Env)); in transferValueOrImpl()
363 Env.assume(ModelPred(Env, forceBoolValue(Env, *ValueOrPredExpr), in transferValueOrImpl()
371 [](Environment &Env, const Formula &ExprVal, in transferValueOrStringEmptyCall()
373 auto &A = Env.arena(); in transferValueOrStringEmptyCall()
389 [](Environment &Env, const Formula &ExprVal, in transferValueOrNotEqX() argument
391 auto &A = Env.arena(); in transferValueOrNotEqX()
402 if (State.Env.getValue(*E) != nullptr) in transferCallReturningOptional()
407 Loc = &State.Env.getResultObjectLocation(*E); in transferCallReturningOptional()
409 Loc = State.Env.get<RecordStorageLocation>(*E); in transferCallReturningOptional()
411 Loc = &cast<RecordStorageLocation>(State.Env.createStorageLocation(*E)); in transferCallReturningOptional()
412 State.Env.setStorageLocation(*E, *Loc); in transferCallReturningOptional()
417 createOptionalValue(*Loc, State.Env.makeAtomicBoolValue(), State.Env); in transferCallReturningOptional()
419 State.Env.setValue(*E, Val); in transferCallReturningOptional()
422 void constructOptionalValue(const Expr &E, Environment &Env, in constructOptionalValue() argument
424 RecordStorageLocation &Loc = Env.getResultObjectLocation(E); in constructOptionalValue()
425 Env.setValue(E, createOptionalValue(Loc, HasValueVal, Env)); in constructOptionalValue()
448 return State.Env.getBoolLiteralValue(true); in valueOrConversionHasValue()
452 auto *Loc = State.Env.get<RecordStorageLocation>(E); in valueOrConversionHasValue()
453 if (auto *HasValueVal = getHasValue(State.Env, Loc)) in valueOrConversionHasValue()
455 return State.Env.makeAtomicBoolValue(); in valueOrConversionHasValue()
463 constructOptionalValue(*E, State.Env, in transferValueOrConversionConstructor()
473 if (auto *Loc = State.Env.get<RecordStorageLocation>(*E->getArg(0))) { in transferAssignment()
474 createOptionalValue(*Loc, HasValueVal, State.Env); in transferAssignment()
477 State.Env.setStorageLocation(*E, *Loc); in transferAssignment()
494 transferAssignment(E, State.Env.getBoolLiteralValue(false), State); in transferNulloptAssignment()
498 Environment &Env) { in transferSwap() argument
505 createOptionalValue(*Loc2, Env.makeAtomicBoolValue(), Env); in transferSwap()
509 createOptionalValue(*Loc1, Env.makeAtomicBoolValue(), Env); in transferSwap()
519 BoolValue *BoolVal1 = getHasValue(Env, Loc1); in transferSwap()
521 BoolVal1 = &Env.makeAtomicBoolValue(); in transferSwap()
523 BoolValue *BoolVal2 = getHasValue(Env, Loc2); in transferSwap()
525 BoolVal2 = &Env.makeAtomicBoolValue(); in transferSwap()
527 createOptionalValue(*Loc1, *BoolVal2, Env); in transferSwap()
528 createOptionalValue(*Loc2, *BoolVal1, Env); in transferSwap()
535 auto *OtherLoc = State.Env.get<RecordStorageLocation>(*E->getArg(0)); in transferSwapCall()
536 transferSwap(getImplicitObjectLocation(*E, State.Env), OtherLoc, State.Env); in transferSwapCall()
542 auto *Arg0Loc = State.Env.get<RecordStorageLocation>(*E->getArg(0)); in transferStdSwapCall()
543 auto *Arg1Loc = State.Env.get<RecordStorageLocation>(*E->getArg(1)); in transferStdSwapCall()
544 transferSwap(Arg0Loc, Arg1Loc, State.Env); in transferStdSwapCall()
551 if (auto *Loc = State.Env.getStorageLocation(*E->getArg(0))) in transferStdForwardCall()
552 State.Env.setStorageLocation(*E, *Loc); in transferStdForwardCall()
580 Environment &Env = State.Env; in transferOptionalAndOptionalCmp() local
581 auto &A = Env.arena(); in transferOptionalAndOptionalCmp()
582 auto *CmpValue = &forceBoolValue(Env, *CmpExpr); in transferOptionalAndOptionalCmp()
583 auto *Arg0Loc = Env.get<RecordStorageLocation>(*CmpExpr->getArg(0)); in transferOptionalAndOptionalCmp()
584 if (auto *LHasVal = getHasValue(Env, Arg0Loc)) { in transferOptionalAndOptionalCmp()
585 auto *Arg1Loc = Env.get<RecordStorageLocation>(*CmpExpr->getArg(1)); in transferOptionalAndOptionalCmp()
586 if (auto *RHasVal = getHasValue(Env, Arg1Loc)) { in transferOptionalAndOptionalCmp()
589 Env.assume(evaluateEquality(A, *CmpValue, LHasVal->formula(), in transferOptionalAndOptionalCmp()
596 const clang::Expr *E, Environment &Env) { in transferOptionalAndValueCmp() argument
597 auto &A = Env.arena(); in transferOptionalAndValueCmp()
598 auto *CmpValue = &forceBoolValue(Env, *CmpExpr); in transferOptionalAndValueCmp()
599 auto *Loc = Env.get<RecordStorageLocation>(*E); in transferOptionalAndValueCmp()
600 if (auto *HasVal = getHasValue(Env, Loc)) { in transferOptionalAndValueCmp()
603 Env.assume( in transferOptionalAndValueCmp()
609 const clang::Expr *E, Environment &Env) { in transferOptionalAndNulloptCmp() argument
610 auto &A = Env.arena(); in transferOptionalAndNulloptCmp()
611 auto *CmpValue = &forceBoolValue(Env, *CmpExpr); in transferOptionalAndNulloptCmp()
612 auto *Loc = Env.get<RecordStorageLocation>(*E); in transferOptionalAndNulloptCmp()
613 if (auto *HasVal = getHasValue(Env, Loc)) { in transferOptionalAndNulloptCmp()
616 Env.assume(evaluateEquality(A, *CmpValue, HasVal->formula(), in transferOptionalAndNulloptCmp()
658 constructOptionalValue(*E, State.Env, in buildTransferMatchSwitch()
659 State.Env.getBoolLiteralValue(true)); in buildTransferMatchSwitch()
666 constructOptionalValue(*E, State.Env, in buildTransferMatchSwitch()
667 State.Env.getBoolLiteralValue(false)); in buildTransferMatchSwitch()
723 getImplicitObjectLocation(*E, State.Env)) { in buildTransferMatchSwitch()
724 createOptionalValue(*Loc, State.Env.getBoolLiteralValue(true), in buildTransferMatchSwitch()
725 State.Env); in buildTransferMatchSwitch()
735 getImplicitObjectLocation(*E, State.Env)) { in buildTransferMatchSwitch()
736 createOptionalValue(*Loc, State.Env.getBoolLiteralValue(false), in buildTransferMatchSwitch()
737 State.Env); in buildTransferMatchSwitch()
767 transferOptionalAndNulloptCmp(Cmp, Cmp->getArg(0), State.Env); in buildTransferMatchSwitch()
773 transferOptionalAndNulloptCmp(Cmp, Cmp->getArg(1), State.Env); in buildTransferMatchSwitch()
781 transferOptionalAndValueCmp(Cmp, Cmp->getArg(0), State.Env); in buildTransferMatchSwitch()
789 transferOptionalAndValueCmp(Cmp, Cmp->getArg(1), State.Env); in buildTransferMatchSwitch()
800 const Environment &Env) { in diagnoseUnwrapCall() argument
802 getLocBehindPossiblePointer(*ObjectExpr, Env))) { in diagnoseUnwrapCall()
803 auto *Prop = Env.getValue(locForHasValue(*OptionalLoc)); in diagnoseUnwrapCall()
805 if (Env.proves(HasValueVal->formula())) in diagnoseUnwrapCall()
828 const Environment &Env) { in buildDiagnoseMatchSwitch() argument
829 return diagnoseUnwrapCall(E->getImplicitObjectArgument(), Env); in buildDiagnoseMatchSwitch()
836 const Environment &Env) { in buildDiagnoseMatchSwitch() argument
837 return diagnoseUnwrapCall(E->getArg(0), Env); in buildDiagnoseMatchSwitch()
856 Environment &Env) in UncheckedOptionalAccessModel() argument
859 Env.getDataflowAnalysisContext().setSyntheticFieldCallback( in UncheckedOptionalAccessModel()
869 NoopLattice &L, Environment &Env) { in transfer() argument
870 LatticeTransferState State(L, Env); in transfer()