Lines Matching full:env

52     return &CurState.Env;  in getEnvironment()
56 return &State->Env; in getEnvironment()
60 Environment &Env) { in evaluateBooleanEquality() argument
61 Value *LHSValue = Env.getValue(LHS); in evaluateBooleanEquality()
62 Value *RHSValue = Env.getValue(RHS); in evaluateBooleanEquality()
65 return Env.getBoolLiteralValue(true); in evaluateBooleanEquality()
69 return Env.makeIff(*LHSBool, *RHSBool); in evaluateBooleanEquality()
77 return Env.getBoolLiteralValue(true); in evaluateBooleanEquality()
79 return Env.makeAtomicBoolValue(); in evaluateBooleanEquality()
82 static BoolValue &unpackValue(BoolValue &V, Environment &Env) { in unpackValue() argument
84 auto &A = Env.getDataflowAnalysisContext().arena(); in unpackValue()
93 static Value *maybeUnpackLValueExpr(const Expr &E, Environment &Env) { in maybeUnpackLValueExpr() argument
94 auto *Loc = Env.getStorageLocation(E); in maybeUnpackLValueExpr()
97 auto *Val = Env.getValue(*Loc); in maybeUnpackLValueExpr()
103 auto &UnpackedVal = unpackValue(*B, Env); in maybeUnpackLValueExpr()
106 Env.setValue(*Loc, UnpackedVal); in maybeUnpackLValueExpr()
110 static void propagateValue(const Expr &From, const Expr &To, Environment &Env) { in propagateValue() argument
113 if (auto *Val = Env.getValue(From)) in propagateValue()
114 Env.setValue(To, *Val); in propagateValue()
118 Environment &Env) { in propagateStorageLocation() argument
119 if (auto *Loc = Env.getStorageLocation(From)) in propagateStorageLocation()
120 Env.setStorageLocation(To, *Loc); in propagateStorageLocation()
127 Environment &Env) { in propagateValueOrStorageLocation() argument
130 propagateStorageLocation(From, To, Env); in propagateValueOrStorageLocation()
132 propagateValue(From, To, Env); in propagateValueOrStorageLocation()
139 TransferVisitor(const StmtToEnvMap &StmtToEnv, Environment &Env, in TransferVisitor() argument
141 : StmtToEnv(StmtToEnv), Env(Env), Model(Model) {} in TransferVisitor()
155 propagateStorageLocation(*S->getLHS(), *S, Env); in VisitBinaryOperator()
159 auto *LHSLoc = Env.getStorageLocation(*LHS); in VisitBinaryOperator()
163 auto *RHSVal = Env.getValue(*RHS); in VisitBinaryOperator()
168 Env.setValue(*LHSLoc, *RHSVal); in VisitBinaryOperator()
171 Env.setStorageLocation(*S, *LHSLoc); in VisitBinaryOperator()
180 Env.setValue(*S, Env.makeAnd(LHSVal, RHSVal)); in VisitBinaryOperator()
182 Env.setValue(*S, Env.makeOr(LHSVal, RHSVal)); in VisitBinaryOperator()
187 auto &LHSEqRHSValue = evaluateBooleanEquality(*LHS, *RHS, Env); in VisitBinaryOperator()
188 Env.setValue(*S, S->getOpcode() == BO_EQ ? LHSEqRHSValue in VisitBinaryOperator()
189 : Env.makeNot(LHSEqRHSValue)); in VisitBinaryOperator()
193 propagateValueOrStorageLocation(*RHS, *S, Env); in VisitBinaryOperator()
217 auto *DeclLoc = Env.getStorageLocation(*VD); in VisitDeclRefExpr()
221 Env.setStorageLocation(*S, *DeclLoc); in VisitDeclRefExpr()
240 if (D.getType()->isReferenceType() && Env.getStorageLocation(D) != nullptr) in ProcessVarDecl()
243 assert(Env.getStorageLocation(D) == nullptr); in ProcessVarDecl()
245 Env.setStorageLocation(D, Env.createObject(D)); in ProcessVarDecl()
267 if (auto *Loc = Env.getStorageLocation(*ME)) in ProcessVarDecl()
268 Env.setStorageLocation(*B, *Loc); in ProcessVarDecl()
277 auto *VDLoc = Env.getStorageLocation(*VD); in ProcessVarDecl()
279 Env.setStorageLocation(*B, *VDLoc); in ProcessVarDecl()
295 dyn_cast_or_null<BoolValue>(Env.getValue(*SubExpr))) in VisitImplicitCastExpr()
296 Env.setValue(*S, *SubExprVal); in VisitImplicitCastExpr()
300 Env.setValue(*S, Env.makeAtomicBoolValue()); in VisitImplicitCastExpr()
307 auto *SubExprVal = maybeUnpackLValueExpr(*SubExpr, Env); in VisitImplicitCastExpr()
311 Env.setValue(*S, *SubExprVal); in VisitImplicitCastExpr()
330 propagateValueOrStorageLocation(*SubExpr, *S, Env); in VisitImplicitCastExpr()
335 Env.getOrCreateNullPointerValue(S->getType()->getPointeeType()); in VisitImplicitCastExpr()
336 Env.setValue(*S, NullPointerVal); in VisitImplicitCastExpr()
344 StorageLocation *PointeeLoc = Env.getStorageLocation(*SubExpr); in VisitImplicitCastExpr()
348 Env.setValue(*S, Env.create<PointerValue>(*PointeeLoc)); in VisitImplicitCastExpr()
368 const auto *SubExprVal = Env.get<PointerValue>(*SubExpr); in VisitUnaryOperator()
372 Env.setStorageLocation(*S, SubExprVal->getPointeeLoc()); in VisitUnaryOperator()
380 if (StorageLocation *PointeeLoc = Env.getStorageLocation(*SubExpr)) in VisitUnaryOperator()
381 Env.setValue(*S, Env.create<PointerValue>(*PointeeLoc)); in VisitUnaryOperator()
385 auto *SubExprVal = dyn_cast_or_null<BoolValue>(Env.getValue(*SubExpr)); in VisitUnaryOperator()
389 Env.setValue(*S, Env.makeNot(*SubExprVal)); in VisitUnaryOperator()
398 propagateStorageLocation(*S->getSubExpr(), *S, Env); in VisitUnaryOperator()
399 if (StorageLocation *Loc = Env.getStorageLocation(*S->getSubExpr())) in VisitUnaryOperator()
400 Env.clearValue(*Loc); in VisitUnaryOperator()
407 propagateValue(*S->getSubExpr(), *S, Env); in VisitUnaryOperator()
408 if (StorageLocation *Loc = Env.getStorageLocation(*S->getSubExpr())) in VisitUnaryOperator()
409 Env.clearValue(*Loc); in VisitUnaryOperator()
417 auto *ThisPointeeLoc = Env.getThisPointeeStorageLocation(); in VisitCXXThisExpr()
423 Env.setValue(*S, Env.create<PointerValue>(*ThisPointeeLoc)); in VisitCXXThisExpr()
427 if (Value *Val = Env.createValue(S->getType())) in VisitCXXNewExpr()
428 Env.setValue(*S, *Val); in VisitCXXNewExpr()
439 if (!Env.getDataflowAnalysisContext().getOptions().ContextSensitiveOpts) in VisitReturnStmt()
450 auto *Val = Env.getValue(*Ret); in VisitReturnStmt()
455 Env.setReturnValue(Val); in VisitReturnStmt()
457 auto *Loc = Env.getStorageLocation(*Ret); in VisitReturnStmt()
462 Env.setReturnStorageLocation(Loc); in VisitReturnStmt()
480 auto *VarDeclLoc = Env.getStorageLocation(*D); in VisitMemberExpr()
484 Env.setStorageLocation(*S, *VarDeclLoc); in VisitMemberExpr()
489 RecordStorageLocation *BaseLoc = getBaseObjectLocation(*S, Env); in VisitMemberExpr()
496 Env.setStorageLocation(*S, *MemberLoc); in VisitMemberExpr()
502 propagateValueOrStorageLocation(*ArgExpr, *S, Env); in VisitCXXDefaultArgExpr()
505 auto &Loc = Env.getResultObjectLocation(*S); in VisitCXXDefaultArgExpr()
506 Env.initializeFieldsWithValues(Loc); in VisitCXXDefaultArgExpr()
520 propagateValueOrStorageLocation(*InitExpr, *S, Env); in VisitCXXDefaultInitExpr()
535 RecordStorageLocation &Loc = Env.getResultObjectLocation(*S); in VisitCXXConstructExpr()
545 auto *ArgLoc = Env.get<RecordStorageLocation>(*Arg); in VisitCXXConstructExpr()
552 copyRecord(*ArgLoc, Loc, Env); in VisitCXXConstructExpr()
556 Env.initializeFieldsWithValues(Loc, S->getType()); in VisitCXXConstructExpr()
582 LocSrc = &Env.getResultObjectLocation(*Arg1); in VisitCXXOperatorCallExpr()
584 LocSrc = Env.get<RecordStorageLocation>(*Arg1); in VisitCXXOperatorCallExpr()
586 auto *LocDst = Env.get<RecordStorageLocation>(*Arg0); in VisitCXXOperatorCallExpr()
591 copyRecord(*LocSrc, *LocDst, Env); in VisitCXXOperatorCallExpr()
607 Env.setStorageLocation(*S, *LocDst); in VisitCXXOperatorCallExpr()
609 copyRecord(*LocDst, Env.getResultObjectLocation(*S), Env); in VisitCXXOperatorCallExpr()
620 propagateValue(*RBO->getSemanticForm(), *RBO, Env); in VisitCXXRewrittenBinaryOperator()
633 auto *ArgLoc = Env.getStorageLocation(*Arg); in VisitCallExpr()
637 Env.setStorageLocation(*S, *ArgLoc); in VisitCallExpr()
643 auto *ArgVal = Env.getValue(*S->getArg(0)); in VisitCallExpr()
646 Env.setValue(*S, *ArgVal); in VisitCallExpr()
653 RecordStorageLocation &Loc = Env.getResultObjectLocation(*S); in VisitCallExpr()
654 Env.initializeFieldsWithValues(Loc); in VisitCallExpr()
663 StorageLocation &Loc = Env.createStorageLocation(*S); in VisitMaterializeTemporaryExpr()
664 Env.setStorageLocation(*S, Loc); in VisitMaterializeTemporaryExpr()
671 if (Value *SubExprVal = Env.getValue(*SubExpr)) in VisitMaterializeTemporaryExpr()
672 Env.setValue(Loc, *SubExprVal); in VisitMaterializeTemporaryExpr()
679 propagateValue(*SubExpr, *S, Env); in VisitCXXBindTemporaryExpr()
687 propagateValueOrStorageLocation(*SubExpr, *S, Env); in VisitCXXStaticCastExpr()
708 Env.setStorageLocation(*S, *TrueLoc); in VisitConditionalOperator()
727 FalseEnv->getValue(*S->getFalseExpr()), *FalseEnv, Env, Model)) in VisitConditionalOperator()
728 Env.setValue(*S, *Val); in VisitConditionalOperator()
739 propagateValueOrStorageLocation(*S->getInit(0), *S, Env); in VisitInitListExpr()
747 RecordStorageLocation &Loc = Env.getResultObjectLocation(*S); in VisitInitListExpr()
762 Loc.setChild(*Field, &Env.createObject(Field->getType(), Init)); in VisitInitListExpr()
770 Value *Val = Env.getValue(*Init); in VisitInitListExpr()
774 &Env.getOrCreateNullPointerValue(Init->getType()->getPointeeType()); in VisitInitListExpr()
776 Val = Env.createValue(Field->getType()); in VisitInitListExpr()
778 Env.setValue(*FieldLoc, *Val); in VisitInitListExpr()
784 Env.initializeFieldsWithValues(*cast<RecordStorageLocation>(FieldLoc)); in VisitInitListExpr()
786 if (Value *Val = Env.createValue(FieldType)) in VisitInitListExpr()
787 Env.setValue(*FieldLoc, *Val); in VisitInitListExpr()
795 Env.setValue(*S, Env.getBoolLiteralValue(S->getValue())); in VisitCXXBoolLiteralExpr()
799 Env.setValue(*S, Env.getIntLiteralValue(S->getValue())); in VisitIntegerLiteral()
836 if (Env.getValue(SubExpr) == nullptr) in getLogicOperatorSubExprValue()
838 if (auto *Val = dyn_cast_or_null<BoolValue>(Env.getValue(SubExpr))) in getLogicOperatorSubExprValue()
843 return Env.makeAtomicBoolValue(); in getLogicOperatorSubExprValue()
850 const auto &Options = Env.getDataflowAnalysisContext().getOptions(); in transferInlineCall()
852 Env.canDescend(Options.ContextSensitiveOpts->Depth, F))) in transferInlineCall()
855 const AdornedCFG *ACFG = Env.getDataflowAnalysisContext().getAdornedCFG(F); in transferInlineCall()
865 auto CalleeEnv = Env.pushCall(S); in transferInlineCall()
881 Env.popCall(S, ExitState->Env); in transferInlineCall()
885 Environment &Env; member in clang::dataflow::__anoneae148b30111::TransferVisitor
891 void transfer(const StmtToEnvMap &StmtToEnv, const Stmt &S, Environment &Env, in transfer() argument
893 TransferVisitor(StmtToEnv, Env, Model).Visit(&S); in transfer()