Lines Matching refs:Env

46     return &CurState.Env;  in getEnvironment()
50 return &State->Env; in getEnvironment()
54 Environment &Env) { in evaluateBooleanEquality() argument
55 Value *LHSValue = Env.getValue(LHS); in evaluateBooleanEquality()
56 Value *RHSValue = Env.getValue(RHS); in evaluateBooleanEquality()
59 return Env.getBoolLiteralValue(true); in evaluateBooleanEquality()
63 return Env.makeIff(*LHSBool, *RHSBool); in evaluateBooleanEquality()
65 return Env.makeAtomicBoolValue(); in evaluateBooleanEquality()
68 static BoolValue &unpackValue(BoolValue &V, Environment &Env) { in unpackValue() argument
70 auto &A = Env.getDataflowAnalysisContext().arena(); in unpackValue()
79 static Value *maybeUnpackLValueExpr(const Expr &E, Environment &Env) { in maybeUnpackLValueExpr() argument
80 auto *Loc = Env.getStorageLocation(E); in maybeUnpackLValueExpr()
83 auto *Val = Env.getValue(*Loc); in maybeUnpackLValueExpr()
89 auto &UnpackedVal = unpackValue(*B, Env); in maybeUnpackLValueExpr()
92 Env.setValue(*Loc, UnpackedVal); in maybeUnpackLValueExpr()
96 static void propagateValue(const Expr &From, const Expr &To, Environment &Env) { in propagateValue() argument
97 if (auto *Val = Env.getValue(From)) in propagateValue()
98 Env.setValue(To, *Val); in propagateValue()
102 Environment &Env) { in propagateStorageLocation() argument
103 if (auto *Loc = Env.getStorageLocation(From)) in propagateStorageLocation()
104 Env.setStorageLocation(To, *Loc); in propagateStorageLocation()
111 Environment &Env) { in propagateValueOrStorageLocation() argument
114 propagateStorageLocation(From, To, Env); in propagateValueOrStorageLocation()
116 propagateValue(From, To, Env); in propagateValueOrStorageLocation()
123 TransferVisitor(const StmtToEnvMap &StmtToEnv, Environment &Env) in TransferVisitor() argument
124 : StmtToEnv(StmtToEnv), Env(Env) {} in TransferVisitor()
135 auto *LHSLoc = Env.getStorageLocation(*LHS); in VisitBinaryOperator()
139 auto *RHSVal = Env.getValue(*RHS); in VisitBinaryOperator()
144 Env.setValue(*LHSLoc, *RHSVal); in VisitBinaryOperator()
147 Env.setStorageLocation(*S, *LHSLoc); in VisitBinaryOperator()
156 Env.setValue(*S, Env.makeAnd(LHSVal, RHSVal)); in VisitBinaryOperator()
158 Env.setValue(*S, Env.makeOr(LHSVal, RHSVal)); in VisitBinaryOperator()
163 auto &LHSEqRHSValue = evaluateBooleanEquality(*LHS, *RHS, Env); in VisitBinaryOperator()
164 Env.setValue(*S, S->getOpcode() == BO_EQ ? LHSEqRHSValue in VisitBinaryOperator()
165 : Env.makeNot(LHSEqRHSValue)); in VisitBinaryOperator()
169 propagateValueOrStorageLocation(*RHS, *S, Env); in VisitBinaryOperator()
193 auto *DeclLoc = Env.getStorageLocation(*VD); in VisitDeclRefExpr()
197 Env.setStorageLocation(*S, *DeclLoc); in VisitDeclRefExpr()
216 if (D.getType()->isReferenceType() && Env.getStorageLocation(D) != nullptr) in ProcessVarDecl()
219 assert(Env.getStorageLocation(D) == nullptr); in ProcessVarDecl()
221 Env.setStorageLocation(D, Env.createObject(D)); in ProcessVarDecl()
243 if (auto *Loc = Env.getStorageLocation(*ME)) in ProcessVarDecl()
244 Env.setStorageLocation(*B, *Loc); in ProcessVarDecl()
253 auto *VDLoc = Env.getStorageLocation(*VD); in ProcessVarDecl()
255 Env.setStorageLocation(*B, *VDLoc); in ProcessVarDecl()
271 dyn_cast_or_null<BoolValue>(Env.getValue(*SubExpr))) in VisitImplicitCastExpr()
272 Env.setValue(*S, *SubExprVal); in VisitImplicitCastExpr()
276 Env.setValue(*S, Env.makeAtomicBoolValue()); in VisitImplicitCastExpr()
283 auto *SubExprVal = maybeUnpackLValueExpr(*SubExpr, Env); in VisitImplicitCastExpr()
287 Env.setValue(*S, *SubExprVal); in VisitImplicitCastExpr()
306 propagateValueOrStorageLocation(*SubExpr, *S, Env); in VisitImplicitCastExpr()
311 Env.getOrCreateNullPointerValue(S->getType()->getPointeeType()); in VisitImplicitCastExpr()
312 Env.setValue(*S, NullPointerVal); in VisitImplicitCastExpr()
320 StorageLocation *PointeeLoc = Env.getStorageLocation(*SubExpr); in VisitImplicitCastExpr()
324 Env.setValue(*S, Env.create<PointerValue>(*PointeeLoc)); in VisitImplicitCastExpr()
344 const auto *SubExprVal = Env.get<PointerValue>(*SubExpr); in VisitUnaryOperator()
348 Env.setStorageLocation(*S, SubExprVal->getPointeeLoc()); in VisitUnaryOperator()
356 if (StorageLocation *PointeeLoc = Env.getStorageLocation(*SubExpr)) in VisitUnaryOperator()
357 Env.setValue(*S, Env.create<PointerValue>(*PointeeLoc)); in VisitUnaryOperator()
361 auto *SubExprVal = dyn_cast_or_null<BoolValue>(Env.getValue(*SubExpr)); in VisitUnaryOperator()
365 Env.setValue(*S, Env.makeNot(*SubExprVal)); in VisitUnaryOperator()
374 auto *ThisPointeeLoc = Env.getThisPointeeStorageLocation(); in VisitCXXThisExpr()
380 Env.setValue(*S, Env.create<PointerValue>(*ThisPointeeLoc)); in VisitCXXThisExpr()
384 if (Value *Val = Env.createValue(S->getType())) in VisitCXXNewExpr()
385 Env.setValue(*S, *Val); in VisitCXXNewExpr()
396 if (!Env.getDataflowAnalysisContext().getOptions().ContextSensitiveOpts) in VisitReturnStmt()
404 auto *Val = Env.getValue(*Ret); in VisitReturnStmt()
409 Env.setReturnValue(Val); in VisitReturnStmt()
411 auto *Loc = Env.getStorageLocation(*Ret); in VisitReturnStmt()
416 Env.setReturnStorageLocation(Loc); in VisitReturnStmt()
434 auto *VarDeclLoc = Env.getStorageLocation(*D); in VisitMemberExpr()
438 Env.setStorageLocation(*S, *VarDeclLoc); in VisitMemberExpr()
443 RecordStorageLocation *BaseLoc = getBaseObjectLocation(*S, Env); in VisitMemberExpr()
450 Env.setStorageLocation(*S, *MemberLoc); in VisitMemberExpr()
456 propagateValueOrStorageLocation(*InitExpr, *S, Env); in VisitCXXDefaultInitExpr()
471 auto *ArgLoc = Env.get<RecordStorageLocation>(*Arg); in VisitCXXConstructExpr()
476 if (Value *Val = Env.getValue(*ArgLoc)) in VisitCXXConstructExpr()
477 Env.setValue(*S, *Val); in VisitCXXConstructExpr()
479 auto &Val = *cast<RecordValue>(Env.createValue(S->getType())); in VisitCXXConstructExpr()
480 Env.setValue(*S, Val); in VisitCXXConstructExpr()
481 copyRecord(*ArgLoc, Val.getLoc(), Env); in VisitCXXConstructExpr()
490 auto &InitialVal = *cast<RecordValue>(Env.createValue(S->getType())); in VisitCXXConstructExpr()
491 Env.setValue(*S, InitialVal); in VisitCXXConstructExpr()
518 if (auto *Val = Env.get<RecordValue>(*Arg1)) in VisitCXXOperatorCallExpr()
521 LocSrc = Env.get<RecordStorageLocation>(*Arg1); in VisitCXXOperatorCallExpr()
523 auto *LocDst = Env.get<RecordStorageLocation>(*Arg0); in VisitCXXOperatorCallExpr()
537 copyRecord(*LocSrc, *LocDst, Env); in VisitCXXOperatorCallExpr()
538 Env.setStorageLocation(*S, *LocDst); in VisitCXXOperatorCallExpr()
547 propagateValue(*SubExpr, *S, Env); in VisitCXXFunctionalCastExpr()
552 if (Value *Val = Env.createValue(S->getType())) in VisitCXXTemporaryObjectExpr()
553 Env.setValue(*S, *Val); in VisitCXXTemporaryObjectExpr()
566 auto *ArgLoc = Env.getStorageLocation(*Arg); in VisitCallExpr()
570 Env.setStorageLocation(*S, *ArgLoc); in VisitCallExpr()
576 auto *ArgVal = Env.getValue(*S->getArg(0)); in VisitCallExpr()
579 Env.setValue(*S, *ArgVal); in VisitCallExpr()
588 if (Env.getValue(*S) == nullptr) in VisitCallExpr()
589 refreshRecordValue(*S, Env); in VisitCallExpr()
597 Value *SubExprVal = Env.getValue(*SubExpr); in VisitMaterializeTemporaryExpr()
602 Env.setStorageLocation(*S, RecordVal->getLoc()); in VisitMaterializeTemporaryExpr()
606 StorageLocation &Loc = Env.createStorageLocation(*S); in VisitMaterializeTemporaryExpr()
607 Env.setValue(Loc, *SubExprVal); in VisitMaterializeTemporaryExpr()
608 Env.setStorageLocation(*S, Loc); in VisitMaterializeTemporaryExpr()
615 propagateValue(*SubExpr, *S, Env); in VisitCXXBindTemporaryExpr()
623 propagateValueOrStorageLocation(*SubExpr, *S, Env); in VisitCXXStaticCastExpr()
636 Env.setStorageLocation(*S, Env.createObject(S->getType())); in VisitConditionalOperator()
637 else if (Value *Val = Env.createValue(S->getType())) in VisitConditionalOperator()
638 Env.setValue(*S, *Val); in VisitConditionalOperator()
645 if (auto *Val = Env.createValue(Type)) in VisitInitListExpr()
646 Env.setValue(*S, *Val); in VisitInitListExpr()
654 propagateValue(*S->getInit(0), *S, Env); in VisitInitListExpr()
677 auto *BaseVal = Env.get<RecordValue>(*Init); in VisitInitListExpr()
679 BaseVal = cast<RecordValue>(Env.createValue(Init->getType())); in VisitInitListExpr()
700 auto& Loc = Env.createObject(Field->getType(), Init); in VisitInitListExpr()
712 Env.getDataflowAnalysisContext().getModeledFields(Type), FieldLocs)); in VisitInitListExpr()
716 Env.getDataflowAnalysisContext().getSyntheticFields(Type)) { in VisitInitListExpr()
718 {Entry.getKey(), &Env.createObject(Entry.getValue())}); in VisitInitListExpr()
721 auto &Loc = Env.getDataflowAnalysisContext().createRecordStorageLocation( in VisitInitListExpr()
723 RecordValue &RecordVal = Env.create<RecordValue>(Loc); in VisitInitListExpr()
725 Env.setValue(Loc, RecordVal); in VisitInitListExpr()
727 Env.setValue(*S, RecordVal); in VisitInitListExpr()
733 Env.setValue(*S, Env.getBoolLiteralValue(S->getValue())); in VisitCXXBoolLiteralExpr()
737 Env.setValue(*S, Env.getIntLiteralValue(S->getValue())); in VisitIntegerLiteral()
774 if (Env.getValue(SubExpr) == nullptr) in getLogicOperatorSubExprValue()
776 if (auto *Val = dyn_cast_or_null<BoolValue>(Env.getValue(SubExpr))) in getLogicOperatorSubExprValue()
781 return Env.makeAtomicBoolValue(); in getLogicOperatorSubExprValue()
788 const auto &Options = Env.getDataflowAnalysisContext().getOptions(); in transferInlineCall()
790 Env.canDescend(Options.ContextSensitiveOpts->Depth, F))) in transferInlineCall()
794 Env.getDataflowAnalysisContext().getControlFlowContext(F); in transferInlineCall()
804 auto CalleeEnv = Env.pushCall(S); in transferInlineCall()
820 Env.popCall(S, ExitState->Env); in transferInlineCall()
824 Environment &Env; member in clang::dataflow::__anon84337f690111::TransferVisitor
829 void transfer(const StmtToEnvMap &StmtToEnv, const Stmt &S, Environment &Env) { in transfer() argument
830 TransferVisitor(StmtToEnv, Env).Visit(&S); in transfer()