Lines Matching refs:Env
39 Environment &Env) { in evaluateBooleanEquality() argument
41 dyn_cast_or_null<BoolValue>(Env.getValue(LHS, SkipPast::Reference))) in evaluateBooleanEquality()
43 dyn_cast_or_null<BoolValue>(Env.getValue(RHS, SkipPast::Reference))) in evaluateBooleanEquality()
44 return Env.makeIff(*LHSValue, *RHSValue); in evaluateBooleanEquality()
46 return Env.makeAtomicBoolValue(); in evaluateBooleanEquality()
51 TransferVisitor(const StmtToEnvMap &StmtToEnv, Environment &Env, in TransferVisitor() argument
53 : StmtToEnv(StmtToEnv), Env(Env), Options(Options) {} in TransferVisitor()
64 auto *LHSLoc = Env.getStorageLocation(*LHS, SkipPast::Reference); in VisitBinaryOperator()
68 auto *RHSVal = Env.getValue(*RHS, SkipPast::Reference); in VisitBinaryOperator()
73 Env.setValue(*LHSLoc, *RHSVal); in VisitBinaryOperator()
76 Env.setStorageLocation(*S, *LHSLoc); in VisitBinaryOperator()
84 auto &Loc = Env.createStorageLocation(*S); in VisitBinaryOperator()
85 Env.setStorageLocation(*S, Loc); in VisitBinaryOperator()
87 Env.setValue(Loc, Env.makeAnd(LHSVal, RHSVal)); in VisitBinaryOperator()
89 Env.setValue(Loc, Env.makeOr(LHSVal, RHSVal)); in VisitBinaryOperator()
94 auto &LHSEqRHSValue = evaluateBooleanEquality(*LHS, *RHS, Env); in VisitBinaryOperator()
95 auto &Loc = Env.createStorageLocation(*S); in VisitBinaryOperator()
96 Env.setStorageLocation(*S, Loc); in VisitBinaryOperator()
97 Env.setValue(Loc, S->getOpcode() == BO_EQ ? LHSEqRHSValue in VisitBinaryOperator()
98 : Env.makeNot(LHSEqRHSValue)); in VisitBinaryOperator()
102 if (auto *Loc = Env.getStorageLocation(*RHS, SkipPast::None)) in VisitBinaryOperator()
103 Env.setStorageLocation(*S, *Loc); in VisitBinaryOperator()
113 auto *DeclLoc = Env.getStorageLocation(*S->getDecl(), SkipPast::None); in VisitDeclRefExpr()
118 Env.setStorageLocation(*S, *DeclLoc); in VisitDeclRefExpr()
120 auto &Loc = Env.createStorageLocation(*S); in VisitDeclRefExpr()
121 auto &Val = Env.takeOwnership(std::make_unique<ReferenceValue>(*DeclLoc)); in VisitDeclRefExpr()
122 Env.setStorageLocation(*S, Loc); in VisitDeclRefExpr()
123 Env.setValue(Loc, Val); in VisitDeclRefExpr()
136 auto &Loc = Env.createStorageLocation(D); in VisitDeclStmt()
137 Env.setStorageLocation(D, Loc); in VisitDeclStmt()
142 if (Value *Val = Env.createValue(D.getType())) in VisitDeclStmt()
143 Env.setValue(Loc, *Val); in VisitDeclStmt()
151 Env.getStorageLocation(*InitExpr, SkipPast::Reference)) { in VisitDeclStmt()
153 Env.takeOwnership(std::make_unique<ReferenceValue>(*InitExprLoc)); in VisitDeclStmt()
154 Env.setValue(Loc, Val); in VisitDeclStmt()
156 } else if (auto *InitExprVal = Env.getValue(*InitExpr, SkipPast::None)) { in VisitDeclStmt()
157 Env.setValue(Loc, *InitExprVal); in VisitDeclStmt()
160 if (Env.getValue(Loc) == nullptr) { in VisitDeclStmt()
172 if (Value *Val = Env.createValue(D.getType())) in VisitDeclStmt()
173 Env.setValue(Loc, *Val); in VisitDeclStmt()
197 if (auto *Loc = Env.getStorageLocation(*ME, SkipPast::Reference)) in VisitDeclStmt()
198 Env.setStorageLocation(*B, *Loc); in VisitDeclStmt()
212 auto &Loc = Env.createStorageLocation(*S); in VisitImplicitCastExpr()
213 Env.setStorageLocation(*S, Loc); in VisitImplicitCastExpr()
215 Env.getValue(*SubExpr, SkipPast::Reference))) in VisitImplicitCastExpr()
216 Env.setValue(Loc, *SubExprVal); in VisitImplicitCastExpr()
220 Env.setValue(Loc, Env.makeAtomicBoolValue()); in VisitImplicitCastExpr()
225 auto *SubExprVal = Env.getValue(*SubExpr, SkipPast::Reference); in VisitImplicitCastExpr()
229 auto &ExprLoc = Env.createStorageLocation(*S); in VisitImplicitCastExpr()
230 Env.setStorageLocation(*S, ExprLoc); in VisitImplicitCastExpr()
231 Env.setValue(ExprLoc, *SubExprVal); in VisitImplicitCastExpr()
250 auto *SubExprLoc = Env.getStorageLocation(*SubExpr, SkipPast::None); in VisitImplicitCastExpr()
254 Env.setStorageLocation(*S, *SubExprLoc); in VisitImplicitCastExpr()
259 auto &Loc = Env.createStorageLocation(S->getType()); in VisitImplicitCastExpr()
260 Env.setStorageLocation(*S, Loc); in VisitImplicitCastExpr()
263 Env.getOrCreateNullPointerValue(S->getType()->getPointeeType()); in VisitImplicitCastExpr()
264 Env.setValue(Loc, NullPointerVal); in VisitImplicitCastExpr()
280 Env.getValue(*SubExpr, SkipPast::Reference)); in VisitUnaryOperator()
284 auto &Loc = Env.createStorageLocation(*S); in VisitUnaryOperator()
285 Env.setStorageLocation(*S, Loc); in VisitUnaryOperator()
286 Env.setValue(Loc, Env.takeOwnership(std::make_unique<ReferenceValue>( in VisitUnaryOperator()
295 Env.getStorageLocation(*SubExpr, SkipPast::Reference); in VisitUnaryOperator()
299 auto &PointerLoc = Env.createStorageLocation(*S); in VisitUnaryOperator()
301 Env.takeOwnership(std::make_unique<PointerValue>(*PointeeLoc)); in VisitUnaryOperator()
302 Env.setStorageLocation(*S, PointerLoc); in VisitUnaryOperator()
303 Env.setValue(PointerLoc, PointerVal); in VisitUnaryOperator()
308 dyn_cast_or_null<BoolValue>(Env.getValue(*SubExpr, SkipPast::None)); in VisitUnaryOperator()
312 auto &ExprLoc = Env.createStorageLocation(*S); in VisitUnaryOperator()
313 Env.setStorageLocation(*S, ExprLoc); in VisitUnaryOperator()
314 Env.setValue(ExprLoc, Env.makeNot(*SubExprVal)); in VisitUnaryOperator()
323 auto *ThisPointeeLoc = Env.getThisPointeeStorageLocation(); in VisitCXXThisExpr()
329 auto &Loc = Env.createStorageLocation(*S); in VisitCXXThisExpr()
330 Env.setStorageLocation(*S, Loc); in VisitCXXThisExpr()
331 Env.setValue(Loc, Env.takeOwnership( in VisitCXXThisExpr()
345 auto *VarDeclLoc = Env.getStorageLocation(*D, SkipPast::None); in VisitMemberExpr()
350 Env.setStorageLocation(*S, *VarDeclLoc); in VisitMemberExpr()
352 auto &Loc = Env.createStorageLocation(*S); in VisitMemberExpr()
353 Env.setStorageLocation(*S, Loc); in VisitMemberExpr()
354 Env.setValue(Loc, Env.takeOwnership( in VisitMemberExpr()
364 Env.getStorageLocation(*S->getBase(), SkipPast::ReferenceThenPointer)); in VisitMemberExpr()
374 Env.setStorageLocation(*S, MemberLoc); in VisitMemberExpr()
376 auto &Loc = Env.createStorageLocation(*S); in VisitMemberExpr()
377 Env.setStorageLocation(*S, Loc); in VisitMemberExpr()
378 Env.setValue( in VisitMemberExpr()
379 Loc, Env.takeOwnership(std::make_unique<ReferenceValue>(MemberLoc))); in VisitMemberExpr()
387 Value *InitExprVal = Env.getValue(*InitExpr, SkipPast::None); in VisitCXXDefaultInitExpr()
395 *cast<AggregateStorageLocation>(Env.getThisPointeeStorageLocation()); in VisitCXXDefaultInitExpr()
397 Env.setValue(FieldLoc, *InitExprVal); in VisitCXXDefaultInitExpr()
411 auto *ArgLoc = Env.getStorageLocation(*Arg, SkipPast::Reference); in VisitCXXConstructExpr()
415 Env.setStorageLocation(*S, *ArgLoc); in VisitCXXConstructExpr()
416 } else if (auto *ArgVal = Env.getValue(*Arg, SkipPast::Reference)) { in VisitCXXConstructExpr()
417 auto &Loc = Env.createStorageLocation(*S); in VisitCXXConstructExpr()
418 Env.setStorageLocation(*S, Loc); in VisitCXXConstructExpr()
419 Env.setValue(Loc, *ArgVal); in VisitCXXConstructExpr()
424 auto &Loc = Env.createStorageLocation(*S); in VisitCXXConstructExpr()
425 Env.setStorageLocation(*S, Loc); in VisitCXXConstructExpr()
426 if (Value *Val = Env.createValue(S->getType())) in VisitCXXConstructExpr()
427 Env.setValue(Loc, *Val); in VisitCXXConstructExpr()
446 auto *ObjectLoc = Env.getStorageLocation(*Arg0, SkipPast::Reference); in VisitCXXOperatorCallExpr()
450 auto *Val = Env.getValue(*Arg1, SkipPast::Reference); in VisitCXXOperatorCallExpr()
455 Env.setValue(*ObjectLoc, *Val); in VisitCXXOperatorCallExpr()
459 Env.setStorageLocation(*S, *ObjectLoc); in VisitCXXOperatorCallExpr()
468 auto *SubExprLoc = Env.getStorageLocation(*SubExpr, SkipPast::None); in VisitCXXFunctionalCastExpr()
472 Env.setStorageLocation(*S, *SubExprLoc); in VisitCXXFunctionalCastExpr()
477 auto &Loc = Env.createStorageLocation(*S); in VisitCXXTemporaryObjectExpr()
478 Env.setStorageLocation(*S, Loc); in VisitCXXTemporaryObjectExpr()
479 if (Value *Val = Env.createValue(S->getType())) in VisitCXXTemporaryObjectExpr()
480 Env.setValue(Loc, *Val); in VisitCXXTemporaryObjectExpr()
493 auto *ArgLoc = Env.getStorageLocation(*Arg, SkipPast::None); in VisitCallExpr()
497 Env.setStorageLocation(*S, *ArgLoc); in VisitCallExpr()
505 auto *ArgLoc = Env.getStorageLocation(*S->getArg(0), SkipPast::Reference); in VisitCallExpr()
508 Env.setStorageLocation(*S, *ArgLoc); in VisitCallExpr()
523 auto CalleeEnv = Env.pushCall(S); in VisitCallExpr()
537 Env = ExitState->Env; in VisitCallExpr()
545 auto *SubExprLoc = Env.getStorageLocation(*SubExpr, SkipPast::None); in VisitMaterializeTemporaryExpr()
549 Env.setStorageLocation(*S, *SubExprLoc); in VisitMaterializeTemporaryExpr()
556 auto *SubExprLoc = Env.getStorageLocation(*SubExpr, SkipPast::None); in VisitCXXBindTemporaryExpr()
560 Env.setStorageLocation(*S, *SubExprLoc); in VisitCXXBindTemporaryExpr()
568 auto *SubExprLoc = Env.getStorageLocation(*SubExpr, SkipPast::None); in VisitCXXStaticCastExpr()
572 Env.setStorageLocation(*S, *SubExprLoc); in VisitCXXStaticCastExpr()
580 auto &Loc = Env.createStorageLocation(*S); in VisitConditionalOperator()
581 Env.setStorageLocation(*S, Loc); in VisitConditionalOperator()
582 if (Value *Val = Env.createValue(S->getType())) in VisitConditionalOperator()
583 Env.setValue(Loc, *Val); in VisitConditionalOperator()
589 auto &Loc = Env.createStorageLocation(*S); in VisitInitListExpr()
590 Env.setStorageLocation(*S, Loc); in VisitInitListExpr()
592 auto *Val = Env.createValue(Type); in VisitInitListExpr()
596 Env.setValue(Loc, *Val); in VisitInitListExpr()
606 if (Value *InitVal = Env.getValue(*Init, SkipPast::None)) in VisitInitListExpr()
614 auto &Loc = Env.createStorageLocation(*S); in VisitCXXBoolLiteralExpr()
615 Env.setStorageLocation(*S, Loc); in VisitCXXBoolLiteralExpr()
616 Env.setValue(Loc, Env.getBoolLiteralValue(S->getValue())); in VisitCXXBoolLiteralExpr()
648 if (Env.getStorageLocation(SubExpr, SkipPast::None) == nullptr) { in getLogicOperatorSubExprValue()
658 Env.getValue(SubExpr, SkipPast::Reference))) in getLogicOperatorSubExprValue()
663 return Env.makeAtomicBoolValue(); in getLogicOperatorSubExprValue()
667 Environment &Env; member in clang::dataflow::TransferVisitor
671 void transfer(const StmtToEnvMap &StmtToEnv, const Stmt &S, Environment &Env, in transfer() argument
673 TransferVisitor(StmtToEnv, Env, Options).Visit(&S); in transfer()