Lines Matching full:env

51     return &CurState.Env;
55 return &State->Env;
59 Environment &Env) {
60 Value *LHSValue = Env.getValue(LHS);
61 Value *RHSValue = Env.getValue(RHS);
64 return Env.getBoolLiteralValue(true);
68 return Env.makeIff(*LHSBool, *RHSBool);
76 return Env.getBoolLiteralValue(true);
78 return Env.makeAtomicBoolValue();
81 static BoolValue &unpackValue(BoolValue &V, Environment &Env) {
83 auto &A = Env.getDataflowAnalysisContext().arena();
92 static Value *maybeUnpackLValueExpr(const Expr &E, Environment &Env) {
93 auto *Loc = Env.getStorageLocation(E);
96 auto *Val = Env.getValue(*Loc);
102 auto &UnpackedVal = unpackValue(*B, Env);
105 Env.setValue(*Loc, UnpackedVal);
109 static void propagateValue(const Expr &From, const Expr &To, Environment &Env) {
112 if (auto *Val = Env.getValue(From))
113 Env.setValue(To, *Val);
117 Environment &Env) {
118 if (auto *Loc = Env.getStorageLocation(From))
119 Env.setStorageLocation(To, *Loc);
126 Environment &Env) {
129 propagateStorageLocation(From, To, Env);
131 propagateValue(From, To, Env);
138 TransferVisitor(const StmtToEnvMap &StmtToEnv, Environment &Env,
140 : StmtToEnv(StmtToEnv), Env(Env), Model(Model) {}
154 propagateStorageLocation(*S->getLHS(), *S, Env);
158 auto *LHSLoc = Env.getStorageLocation(*LHS);
162 auto *RHSVal = Env.getValue(*RHS);
167 Env.setValue(*LHSLoc, *RHSVal);
170 Env.setStorageLocation(*S, *LHSLoc);
179 Env.setValue(*S, Env.makeAnd(LHSVal, RHSVal));
181 Env.setValue(*S, Env.makeOr(LHSVal, RHSVal));
186 auto &LHSEqRHSValue = evaluateBooleanEquality(*LHS, *RHS, Env);
187 Env.setValue(*S, S->getOpcode() == BO_EQ ? LHSEqRHSValue
188 : Env.makeNot(LHSEqRHSValue));
192 propagateValueOrStorageLocation(*RHS, *S, Env);
216 auto *DeclLoc = Env.getStorageLocation(*VD);
220 Env.setStorageLocation(*S, *DeclLoc);
239 if (D.getType()->isReferenceType() && Env.getStorageLocation(D) != nullptr)
242 assert(Env.getStorageLocation(D) == nullptr);
244 Env.setStorageLocation(D, Env.createObject(D));
266 if (auto *Loc = Env.getStorageLocation(*ME))
267 Env.setStorageLocation(*B, *Loc);
276 auto *VDLoc = Env.getStorageLocation(*VD);
278 Env.setStorageLocation(*B, *VDLoc);
294 dyn_cast_or_null<BoolValue>(Env.getValue(*SubExpr)))
295 Env.setValue(*S, *SubExprVal);
299 Env.setValue(*S, Env.makeAtomicBoolValue());
306 auto *SubExprVal = maybeUnpackLValueExpr(*SubExpr, Env);
310 Env.setValue(*S, *SubExprVal);
329 propagateValueOrStorageLocation(*SubExpr, *S, Env);
334 Env.getOrCreateNullPointerValue(S->getType()->getPointeeType());
335 Env.setValue(*S, NullPointerVal);
343 StorageLocation *PointeeLoc = Env.getStorageLocation(*SubExpr);
347 Env.setValue(*S, Env.create<PointerValue>(*PointeeLoc));
367 const auto *SubExprVal = Env.get<PointerValue>(*SubExpr);
371 Env.setStorageLocation(*S, SubExprVal->getPointeeLoc());
379 if (StorageLocation *PointeeLoc = Env.getStorageLocation(*SubExpr))
380 Env.setValue(*S, Env.create<PointerValue>(*PointeeLoc));
384 auto *SubExprVal = dyn_cast_or_null<BoolValue>(Env.getValue(*SubExpr));
388 Env.setValue(*S, Env.makeNot(*SubExprVal));
397 propagateStorageLocation(*S->getSubExpr(), *S, Env);
398 if (StorageLocation *Loc = Env.getStorageLocation(*S->getSubExpr()))
399 Env.clearValue(*Loc);
406 propagateValue(*S->getSubExpr(), *S, Env);
407 if (StorageLocation *Loc = Env.getStorageLocation(*S->getSubExpr()))
408 Env.clearValue(*Loc);
416 auto *ThisPointeeLoc = Env.getThisPointeeStorageLocation();
422 Env.setValue(*S, Env.create<PointerValue>(*ThisPointeeLoc));
426 if (Value *Val = Env.createValue(S->getType()))
427 Env.setValue(*S, *Val);
438 if (!Env.getDataflowAnalysisContext().getOptions().ContextSensitiveOpts)
449 auto *Val = Env.getValue(*Ret);
454 Env.setReturnValue(Val);
456 auto *Loc = Env.getStorageLocation(*Ret);
461 Env.setReturnStorageLocation(Loc);
479 auto *VarDeclLoc = Env.getStorageLocation(*D);
483 Env.setStorageLocation(*S, *VarDeclLoc);
488 RecordStorageLocation *BaseLoc = getBaseObjectLocation(*S, Env);
495 Env.setStorageLocation(*S, *MemberLoc);
501 propagateValueOrStorageLocation(*ArgExpr, *S, Env);
504 auto &Loc = Env.getResultObjectLocation(*S);
505 Env.initializeFieldsWithValues(Loc);
519 propagateValueOrStorageLocation(*InitExpr, *S, Env);
534 RecordStorageLocation &Loc = Env.getResultObjectLocation(*S);
544 auto *ArgLoc = Env.get<RecordStorageLocation>(*Arg);
551 copyRecord(*ArgLoc, Loc, Env);
555 Env.initializeFieldsWithValues(Loc, S->getType());
581 LocSrc = &Env.getResultObjectLocation(*Arg1);
583 LocSrc = Env.get<RecordStorageLocation>(*Arg1);
585 auto *LocDst = Env.get<RecordStorageLocation>(*Arg0);
590 copyRecord(*LocSrc, *LocDst, Env);
606 Env.setStorageLocation(*S, *LocDst);
608 copyRecord(*LocDst, Env.getResultObjectLocation(*S), Env);
619 propagateValue(*RBO->getSemanticForm(), *RBO, Env);
632 auto *ArgLoc = Env.getStorageLocation(*Arg);
636 Env.setStorageLocation(*S, *ArgLoc);
642 auto *ArgVal = Env.getValue(*S->getArg(0));
645 Env.setValue(*S, *ArgVal);
652 RecordStorageLocation &Loc = Env.getResultObjectLocation(*S);
653 Env.initializeFieldsWithValues(Loc);
662 StorageLocation &Loc = Env.createStorageLocation(*S);
663 Env.setStorageLocation(*S, Loc);
670 if (Value *SubExprVal = Env.getValue(*SubExpr))
671 Env.setValue(Loc, *SubExprVal);
678 propagateValue(*SubExpr, *S, Env);
686 propagateValueOrStorageLocation(*SubExpr, *S, Env);
707 Env.setStorageLocation(*S, *TrueLoc);
726 FalseEnv->getValue(*S->getFalseExpr()), *FalseEnv, Env, Model))
727 Env.setValue(*S, *Val);
738 propagateValueOrStorageLocation(*S->getInit(0), *S, Env);
746 RecordStorageLocation &Loc = Env.getResultObjectLocation(*S);
761 Loc.setChild(*Field, &Env.createObject(Field->getType(), Init));
769 Value *Val = Env.getValue(*Init);
773 &Env.getOrCreateNullPointerValue(Init->getType()->getPointeeType());
775 Val = Env.createValue(Field->getType());
777 Env.setValue(*FieldLoc, *Val);
783 Env.initializeFieldsWithValues(*cast<RecordStorageLocation>(FieldLoc));
785 if (Value *Val = Env.createValue(FieldType))
786 Env.setValue(*FieldLoc, *Val);
794 Env.setValue(*S, Env.getBoolLiteralValue(S->getValue()));
798 Env.setValue(*S, Env.getIntLiteralValue(S->getValue()));
835 if (Env.getValue(SubExpr) == nullptr)
837 if (auto *Val = dyn_cast_or_null<BoolValue>(Env.getValue(SubExpr)))
842 return Env.makeAtomicBoolValue();
849 const auto &Options = Env.getDataflowAnalysisContext().getOptions();
851 Env.canDescend(Options.ContextSensitiveOpts->Depth, F)))
854 const AdornedCFG *ACFG = Env.getDataflowAnalysisContext().getAdornedCFG(F);
864 auto CalleeEnv = Env.pushCall(S);
880 Env.popCall(S, ExitState->Env);
884 Environment &Env;
890 void transfer(const StmtToEnvMap &StmtToEnv, const Stmt &S, Environment &Env,
892 TransferVisitor(StmtToEnv, Env, Model).Visit(&S);