Lines Matching full:env
317 const Formula &forceBoolValue(Environment &Env, const Expr &Expr) { in forceBoolValue() argument
318 auto *Value = Env.get<BoolValue>(Expr); in forceBoolValue()
322 Value = &Env.makeAtomicBoolValue(); in forceBoolValue()
323 Env.setValue(Expr, *Value); in forceBoolValue()
338 Environment &Env) { in setHasValue() argument
339 Env.setValue(locForHasValue(OptionalLoc), HasValueVal); in setHasValue()
344 BoolValue *getHasValue(Environment &Env, RecordStorageLocation *OptionalLoc) { in getHasValue() argument
348 auto *HasValueVal = Env.get<BoolValue>(HasValueLoc); in getHasValue()
350 HasValueVal = &Env.makeAtomicBoolValue(); in getHasValue()
351 Env.setValue(HasValueLoc, *HasValueVal); in getHasValue()
376 const Environment &Env) { in getLocBehindPossiblePointer() argument
378 if (auto *PointerVal = dyn_cast_or_null<PointerValue>(Env.getValue(E))) in getLocBehindPossiblePointer()
382 return Env.getStorageLocation(E); in getLocBehindPossiblePointer()
388 getLocBehindPossiblePointer(*ObjectExpr, State.Env))) { in transferUnwrapCall()
389 if (State.Env.getStorageLocation(*UnwrapExpr) == nullptr) in transferUnwrapCall()
390 State.Env.setStorageLocation(*UnwrapExpr, locForValue(*OptionalLoc)); in transferUnwrapCall()
397 getLocBehindPossiblePointer(*ObjectExpr, State.Env))) in transferArrowOpCall()
398 State.Env.setValue( in transferArrowOpCall()
399 *UnwrapExpr, State.Env.create<PointerValue>(locForValue(*OptionalLoc))); in transferArrowOpCall()
405 setHasValue(State.Env.getResultObjectLocation(*E), in transferMakeOptionalCall()
406 State.Env.getBoolLiteralValue(true), State.Env); in transferMakeOptionalCall()
413 State.Env, getImplicitObjectLocation(*CallExpr, State.Env))) { in transferOptionalHasValueCall()
414 State.Env.setValue(*CallExpr, *HasValueVal); in transferOptionalHasValueCall()
423 const Formula &(*ModelPred)(Environment &Env, const Formula &ExprVal, in transferValueOrImpl() argument
425 auto &Env = State.Env; in transferValueOrImpl() local
431 getHasValue(State.Env, getImplicitObjectLocation(*MCE, State.Env)); in transferValueOrImpl()
435 Env.assume(ModelPred(Env, forceBoolValue(Env, *ValueOrPredExpr), in transferValueOrImpl()
443 [](Environment &Env, const Formula &ExprVal, in transferValueOrStringEmptyCall()
445 auto &A = Env.arena(); in transferValueOrStringEmptyCall()
461 [](Environment &Env, const Formula &ExprVal, in transferValueOrNotEqX() argument
463 auto &A = Env.arena(); in transferValueOrNotEqX()
476 Loc = &State.Env.getResultObjectLocation(*E); in transferCallReturningOptional()
478 Loc = State.Env.get<RecordStorageLocation>(*E); in transferCallReturningOptional()
480 Loc = &cast<RecordStorageLocation>(State.Env.createStorageLocation(*E)); in transferCallReturningOptional()
481 State.Env.setStorageLocation(*E, *Loc); in transferCallReturningOptional()
485 if (State.Env.getValue(locForHasValue(*Loc)) != nullptr) in transferCallReturningOptional()
488 setHasValue(*Loc, State.Env.makeAtomicBoolValue(), State.Env); in transferCallReturningOptional()
491 void constructOptionalValue(const Expr &E, Environment &Env, in constructOptionalValue() argument
493 RecordStorageLocation &Loc = Env.getResultObjectLocation(E); in constructOptionalValue()
494 setHasValue(Loc, HasValueVal, Env); in constructOptionalValue()
514 return State.Env.getBoolLiteralValue(true); in valueOrConversionHasValue()
520 auto *Loc = State.Env.get<RecordStorageLocation>(E); in valueOrConversionHasValue()
521 if (auto *HasValueVal = getHasValue(State.Env, Loc)) in valueOrConversionHasValue()
523 return State.Env.makeAtomicBoolValue(); in valueOrConversionHasValue()
532 *E, State.Env, in transferValueOrConversionConstructor()
542 if (auto *Loc = State.Env.get<RecordStorageLocation>(*E->getArg(0))) { in transferAssignment()
543 setHasValue(*Loc, HasValueVal, State.Env); in transferAssignment()
546 State.Env.setStorageLocation(*E, *Loc); in transferAssignment()
564 transferAssignment(E, State.Env.getBoolLiteralValue(false), State); in transferNulloptAssignment()
568 Environment &Env) { in transferSwap() argument
575 setHasValue(*Loc2, Env.makeAtomicBoolValue(), Env); in transferSwap()
579 setHasValue(*Loc1, Env.makeAtomicBoolValue(), Env); in transferSwap()
589 BoolValue *BoolVal1 = getHasValue(Env, Loc1); in transferSwap()
591 BoolVal1 = &Env.makeAtomicBoolValue(); in transferSwap()
593 BoolValue *BoolVal2 = getHasValue(Env, Loc2); in transferSwap()
595 BoolVal2 = &Env.makeAtomicBoolValue(); in transferSwap()
597 setHasValue(*Loc1, *BoolVal2, Env); in transferSwap()
598 setHasValue(*Loc2, *BoolVal1, Env); in transferSwap()
605 auto *OtherLoc = State.Env.get<RecordStorageLocation>(*E->getArg(0)); in transferSwapCall()
606 transferSwap(getImplicitObjectLocation(*E, State.Env), OtherLoc, State.Env); in transferSwapCall()
612 auto *Arg0Loc = State.Env.get<RecordStorageLocation>(*E->getArg(0)); in transferStdSwapCall()
613 auto *Arg1Loc = State.Env.get<RecordStorageLocation>(*E->getArg(1)); in transferStdSwapCall()
614 transferSwap(Arg0Loc, Arg1Loc, State.Env); in transferStdSwapCall()
621 if (auto *Loc = State.Env.getStorageLocation(*E->getArg(0))) in transferStdForwardCall()
622 State.Env.setStorageLocation(*E, *Loc); in transferStdForwardCall()
650 Environment &Env = State.Env; in transferOptionalAndOptionalCmp() local
651 auto &A = Env.arena(); in transferOptionalAndOptionalCmp()
652 auto *CmpValue = &forceBoolValue(Env, *CmpExpr); in transferOptionalAndOptionalCmp()
653 auto *Arg0Loc = Env.get<RecordStorageLocation>(*CmpExpr->getArg(0)); in transferOptionalAndOptionalCmp()
654 if (auto *LHasVal = getHasValue(Env, Arg0Loc)) { in transferOptionalAndOptionalCmp()
655 auto *Arg1Loc = Env.get<RecordStorageLocation>(*CmpExpr->getArg(1)); in transferOptionalAndOptionalCmp()
656 if (auto *RHasVal = getHasValue(Env, Arg1Loc)) { in transferOptionalAndOptionalCmp()
659 Env.assume(evaluateEquality(A, *CmpValue, LHasVal->formula(), in transferOptionalAndOptionalCmp()
666 const clang::Expr *E, Environment &Env) { in transferOptionalAndValueCmp() argument
667 auto &A = Env.arena(); in transferOptionalAndValueCmp()
668 auto *CmpValue = &forceBoolValue(Env, *CmpExpr); in transferOptionalAndValueCmp()
669 auto *Loc = Env.get<RecordStorageLocation>(*E); in transferOptionalAndValueCmp()
670 if (auto *HasVal = getHasValue(Env, Loc)) { in transferOptionalAndValueCmp()
673 Env.assume( in transferOptionalAndValueCmp()
679 const clang::Expr *E, Environment &Env) { in transferOptionalAndNulloptCmp() argument
680 auto &A = Env.arena(); in transferOptionalAndNulloptCmp()
681 auto *CmpValue = &forceBoolValue(Env, *CmpExpr); in transferOptionalAndNulloptCmp()
682 auto *Loc = Env.get<RecordStorageLocation>(*E); in transferOptionalAndNulloptCmp()
683 if (auto *HasVal = getHasValue(Env, Loc)) { in transferOptionalAndNulloptCmp()
686 Env.assume(evaluateEquality(A, *CmpValue, HasVal->formula(), in transferOptionalAndNulloptCmp()
728 constructOptionalValue(*E, State.Env, in buildTransferMatchSwitch()
729 State.Env.getBoolLiteralValue(true)); in buildTransferMatchSwitch()
736 constructOptionalValue(*E, State.Env, in buildTransferMatchSwitch()
737 State.Env.getBoolLiteralValue(false)); in buildTransferMatchSwitch()
793 getImplicitObjectLocation(*E, State.Env)) { in buildTransferMatchSwitch()
794 setHasValue(*Loc, State.Env.getBoolLiteralValue(true), State.Env); in buildTransferMatchSwitch()
804 getImplicitObjectLocation(*E, State.Env)) { in buildTransferMatchSwitch()
805 setHasValue(*Loc, State.Env.getBoolLiteralValue(false), in buildTransferMatchSwitch()
806 State.Env); in buildTransferMatchSwitch()
836 transferOptionalAndNulloptCmp(Cmp, Cmp->getArg(0), State.Env); in buildTransferMatchSwitch()
842 transferOptionalAndNulloptCmp(Cmp, Cmp->getArg(1), State.Env); in buildTransferMatchSwitch()
850 transferOptionalAndValueCmp(Cmp, Cmp->getArg(0), State.Env); in buildTransferMatchSwitch()
858 transferOptionalAndValueCmp(Cmp, Cmp->getArg(1), State.Env); in buildTransferMatchSwitch()
869 const Environment &Env) { in diagnoseUnwrapCall() argument
871 getLocBehindPossiblePointer(*ObjectExpr, Env))) { in diagnoseUnwrapCall()
872 auto *Prop = Env.getValue(locForHasValue(*OptionalLoc)); in diagnoseUnwrapCall()
874 if (Env.proves(HasValueVal->formula())) in diagnoseUnwrapCall()
897 const Environment &Env) { in buildDiagnoseMatchSwitch() argument
898 return diagnoseUnwrapCall(E->getImplicitObjectArgument(), Env); in buildDiagnoseMatchSwitch()
905 const Environment &Env) { in buildDiagnoseMatchSwitch() argument
906 return diagnoseUnwrapCall(E->getArg(0), Env); in buildDiagnoseMatchSwitch()
919 Environment &Env) in UncheckedOptionalAccessModel() argument
922 Env.getDataflowAnalysisContext().setSyntheticFieldCallback( in UncheckedOptionalAccessModel()
934 NoopLattice &L, Environment &Env) { in transfer() argument
935 LatticeTransferState State(L, Env); in transfer()