Lines Matching defs:EvalInfo
80 class EvalInfo;
388 bool checkSubobject(EvalInfo &Info, const Expr *E, CheckSubobjectKind CSK);
445 void diagnoseUnsizedArrayPointerArithmetic(EvalInfo &Info, const Expr *E);
446 void diagnosePointerArithmetic(EvalInfo &Info, const Expr *E,
449 void adjustIndex(EvalInfo &Info, const Expr *E, APSInt N) {
530 EvalInfo &Info;
595 CallStackFrame(EvalInfo &Info, SourceRange CallRange,
701 static bool HandleDestruction(EvalInfo &Info, const Expr *E,
703 static bool HandleDestruction(EvalInfo &Info, SourceLocation Loc,
724 bool endLifetime(EvalInfo &Info, bool RunDestructors) {
814 /// EvalInfo - This is a private struct used by the evaluator to capture
828 class EvalInfo : public interp::State {
891 EvalInfo &EI;
894 EvaluatingConstructorRAII(EvalInfo &EI, ObjectUnderConstruction Object,
915 EvalInfo &EI;
918 EvaluatingDestructorRAII(EvalInfo &EI, ObjectUnderConstruction Object)
1003 EvalInfo(const ASTContext &C, Expr::EvalStatus &S, EvaluationMode Mode)
1015 ~EvalInfo() {
1297 EvalInfo &Info;
1301 ArrayInitLoopIndex(EvalInfo &Info)
1313 EvalInfo &Info;
1316 EvalInfo::EvaluationMode OldMode;
1318 explicit FoldConstant(EvalInfo &Info, bool Enabled)
1326 Info.EvalMode = EvalInfo::EM_ConstantFold;
1340 EvalInfo &Info;
1341 EvalInfo::EvaluationMode OldMode;
1342 explicit IgnoreSideEffectsRAII(EvalInfo &Info)
1344 Info.EvalMode = EvalInfo::EM_IgnoreSideEffects;
1353 EvalInfo *Info = nullptr;
1376 EvalInfo &Info, SmallVectorImpl<PartialDiagnosticAt> *NewDiag = nullptr)
1401 EvalInfo &Info;
1404 ScopeRAII(EvalInfo &Info)
1423 static bool cleanup(EvalInfo &Info, bool RunDestructors,
1456 bool SubobjectDesignator::checkSubobject(EvalInfo &Info, const Expr *E,
1472 void SubobjectDesignator::diagnoseUnsizedArrayPointerArithmetic(EvalInfo &Info,
1479 void SubobjectDesignator::diagnosePointerArithmetic(EvalInfo &Info,
1494 CallStackFrame::CallStackFrame(EvalInfo &Info, SourceRange CallRange,
1694 bool checkNullPointer(EvalInfo &Info, const Expr *E,
1701 bool checkNullPointerForFoldAccess(EvalInfo &Info, const Expr *E,
1710 bool checkSubobject(EvalInfo &Info, const Expr *E, CheckSubobjectKind CSK) {
1715 void addDecl(EvalInfo &Info, const Expr *E,
1720 void addUnsizedArray(EvalInfo &Info, const Expr *E, QualType ElemTy) {
1732 void addArray(EvalInfo &Info, const Expr *E, const ConstantArrayType *CAT) {
1736 void addComplex(EvalInfo &Info, const Expr *E, QualType EltTy, bool Imag) {
1743 void adjustOffsetAndIndex(EvalInfo &Info, const Expr *E,
1868 static bool Evaluate(APValue &Result, EvalInfo &Info, const Expr *E);
1869 static bool EvaluateInPlace(APValue &Result, EvalInfo &Info,
1872 static bool EvaluateLValue(const Expr *E, LValue &Result, EvalInfo &Info,
1874 static bool EvaluatePointer(const Expr *E, LValue &Result, EvalInfo &Info,
1877 EvalInfo &Info);
1878 static bool EvaluateTemporary(const Expr *E, LValue &Result, EvalInfo &Info);
1879 static bool EvaluateInteger(const Expr *E, APSInt &Result, EvalInfo &Info);
1881 EvalInfo &Info);
1882 static bool EvaluateFloat(const Expr *E, APFloat &Result, EvalInfo &Info);
1883 static bool EvaluateComplex(const Expr *E, ComplexValue &Res, EvalInfo &Info);
1885 EvalInfo &Info);
1886 static bool EvaluateAsRValue(EvalInfo &Info, const Expr *E, APValue &Result);
1888 EvalInfo &Info,
1893 EvalInfo &Info);
1897 EvalInfo &Info);
1954 APValue *EvalInfo::createHeapAlloc(const Expr *E, QualType T, LValue &LV) {
2032 static bool EvaluateIgnoredValue(EvalInfo &Info, const Expr *E) {
2159 static void NoteLValueLocation(EvalInfo &Info, APValue::LValueBase Base) {
2203 EvalInfo &Info, SourceLocation DiagLoc,
2212 static bool CheckLValueConstantExpression(EvalInfo &Info, SourceLocation Loc,
2382 static bool CheckMemberPointerConstantExpression(EvalInfo &Info,
2402 static bool CheckLiteralType(EvalInfo &Info, const Expr *E,
2433 EvalInfo &Info, SourceLocation DiagLoc,
2527 static bool CheckConstantExpression(EvalInfo &Info, SourceLocation DiagLoc,
2542 static bool CheckFullyInitialized(EvalInfo &Info, SourceLocation DiagLoc,
2552 static bool CheckMemoryLeaks(EvalInfo &Info) {
2623 EvalInfo &Info) {
2633 static bool HandleOverflow(EvalInfo &Info, const Expr *E,
2640 static bool HandleFloatToIntCast(EvalInfo &Info, const Expr *E,
2660 static llvm::RoundingMode getActiveRoundingMode(EvalInfo &Info, const Expr *E) {
2669 static bool checkFloatingPointResult(EvalInfo &Info, const Expr *E,
2709 static bool HandleFloatToFloatCast(EvalInfo &Info, const Expr *E,
2725 static APSInt HandleIntToIntCast(EvalInfo &Info, const Expr *E,
2738 static bool HandleIntToFloatCast(EvalInfo &Info, const Expr *E,
2748 static bool truncateBitfieldValue(EvalInfo &Info, const Expr *E,
2773 static bool CheckedIntArithmetic(EvalInfo &Info, const Expr *E,
2797 static bool handleIntIntBinOp(EvalInfo &Info, const BinaryOperator *E,
2916 static bool handleFloatFloatBinOp(EvalInfo &Info, const BinaryOperator *E,
3040 static bool handleVectorVectorBinOp(EvalInfo &Info, const BinaryOperator *E,
3111 static bool CastToDerivedClass(EvalInfo &Info, const Expr *E, LValue &Result,
3140 static bool HandleLValueDirectBase(EvalInfo &Info, const Expr *E, LValue &Obj,
3154 static bool HandleLValueBase(EvalInfo &Info, const Expr *E, LValue &Obj,
3179 static bool HandleLValueBasePath(EvalInfo &Info, const CastExpr *E,
3193 static bool CastToBaseClass(EvalInfo &Info, const Expr *E, LValue &Result,
3209 static bool HandleLValueMember(EvalInfo &Info, const Expr *E, LValue &LVal,
3224 static bool HandleLValueIndirectMember(EvalInfo &Info, const Expr *E,
3239 static bool HandleSizeof(EvalInfo &Info, SourceLocation Loc, QualType Type,
3273 static bool HandleLValueArrayAdjustment(EvalInfo &Info, const Expr *E,
3284 static bool HandleLValueArrayAdjustment(EvalInfo &Info, const Expr *E,
3296 static bool HandleLValueComplexElement(EvalInfo &Info, const Expr *E,
3318 static bool evaluateVarDeclInit(EvalInfo &Info, const Expr *E,
3460 static APSInt extractStringLiteralCharacter(EvalInfo &Info, const Expr *Lit,
3492 static void expandStringLiteral(EvalInfo &Info, const StringLiteral *S,
3567 static bool diagnoseMutableFields(EvalInfo &Info, const Expr *E, AccessKinds AK,
3600 static bool lifetimeStartedInEvaluation(EvalInfo &Info,
3608 case EvalInfo::EvaluatingDeclKind::None:
3611 case EvalInfo::EvaluatingDeclKind::Ctor:
3623 case EvalInfo::EvaluatingDeclKind::Dtor:
3640 static bool CheckArraySize(EvalInfo &Info, const ConstantArrayType *CAT,
3663 bool mayAccessMutableMembers(EvalInfo &Info, AccessKinds AK) const {
3700 findSubobject(EvalInfo &Info, const Expr *E, const CompleteObject &Obj,
3903 EvalInfo &Info;
3928 static bool extractSubobject(EvalInfo &Info, const Expr *E,
3939 EvalInfo &Info;
3986 static bool modifySubobject(EvalInfo &Info, const Expr *E,
4053 static CompleteObject findCompleteObject(EvalInfo &Info, const Expr *E,
4336 handleLValueToRValueConversion(EvalInfo &Info, const Expr *Conv, QualType Type,
4416 static bool handleAssignment(EvalInfo &Info, const Expr *E, const LValue &LVal,
4432 EvalInfo &Info;
4560 static bool handleCompoundAssignment(EvalInfo &Info,
4582 EvalInfo &Info;
4710 static bool handleIncDec(EvalInfo &Info, const Expr *E, const LValue &LVal,
4727 static bool EvaluateObjectArgument(EvalInfo &Info, const Expr *Object,
4756 static const ValueDecl *HandleMemberPointerAccess(EvalInfo &Info,
4838 static const ValueDecl *HandleMemberPointerAccess(EvalInfo &Info,
4858 static bool HandleBaseToDerivedCast(EvalInfo &Info, const CastExpr *E,
4962 static bool EvaluateVarDecl(EvalInfo &Info, const VarDecl *VD) {
4992 static bool EvaluateDecl(EvalInfo &Info, const Decl *D) {
5006 static bool EvaluateDependentExpr(const Expr *E, EvalInfo &Info) {
5016 static bool EvaluateCond(EvalInfo &Info, const VarDecl *CondDecl,
5052 static EvalStmtResult EvaluateStmt(StmtResult &Result, EvalInfo &Info,
5057 static EvalStmtResult EvaluateLoopBody(StmtResult &Result, EvalInfo &Info,
5081 static EvalStmtResult EvaluateSwitch(StmtResult &Result, EvalInfo &Info,
5159 static bool CheckLocalVariableDeclaration(EvalInfo &Info, const VarDecl *VD) {
5174 static EvalStmtResult EvaluateStmt(StmtResult &Result, EvalInfo &Info,
5649 static bool CheckTrivialDefaultConstructor(EvalInfo &Info, SourceLocation Loc,
5674 static bool CheckConstexprFunction(EvalInfo &Info, SourceLocation CallLoc,
5751 static bool checkDynamicType(EvalInfo &Info, const Expr *E, const LValue &This,
5793 checkNonVirtualMemberCallThisPointer(EvalInfo &Info, const Expr *E,
5818 static std::optional<DynamicType> ComputeDynamicType(EvalInfo &Info,
5876 EvalInfo &Info, const Expr *E, LValue &This, const CXXMethodDecl *Found,
5940 static bool HandleCovariantReturnAdjustment(EvalInfo &Info, const Expr *E,
5981 static bool HandleDynamicCast(EvalInfo &Info, const ExplicitCastExpr *E,
6077 EvalInfo &Info;
6129 static bool MaybeHandleUnionActiveMemberChange(EvalInfo &Info,
6233 CallRef Call, EvalInfo &Info,
6259 EvalInfo &Info, const FunctionDecl *Callee,
6296 static bool handleTrivialCopy(EvalInfo &Info, const ParmVarDecl *Param,
6319 CallRef Call, const Stmt *Body, EvalInfo &Info,
6374 EvalInfo &Info, APValue &Result) {
6385 EvalInfo::EvaluatingConstructorRAII EvalObj(
6588 EvalInfo &Info, APValue &Result) {
6598 static bool HandleDestructionImpl(EvalInfo &Info, SourceRange CallRange,
6702 EvalInfo::EvaluatingDestructorRAII EvalObj(
6773 EvalInfo &Info;
6797 static bool HandleDestruction(EvalInfo &Info, const Expr *E,
6805 static bool HandleDestruction(EvalInfo &Info, SourceLocation Loc,
6819 static bool HandleOperatorNewCall(EvalInfo &Info, const CallExpr *E,
6900 static std::optional<DynAlloc *> CheckDeleteKind(EvalInfo &Info, const Expr *E,
6948 bool HandleOperatorDeleteCall(EvalInfo &Info, const CallExpr *E) {
7037 EvalInfo &Info;
7041 APValueToBufferConverter(EvalInfo &Info, CharUnits ObjectWidth,
7251 convert(EvalInfo &Info, const APValue &Src, const CastExpr *BCE) {
7262 EvalInfo &Info;
7266 BufferToAPValueConverter(EvalInfo &Info, const BitCastBuffer &Buffer,
7536 static std::optional<APValue> convert(EvalInfo &Info, BitCastBuffer &Buffer,
7544 QualType Ty, EvalInfo *Info,
7595 static bool checkBitCastConstexprEligibility(EvalInfo *Info,
7606 static bool handleRValueToRValueBitCast(EvalInfo &Info, APValue &DestValue,
7631 static bool handleLValueToRValueBitCast(EvalInfo &Info, APValue &DestValue,
7710 EvalInfo &Info;
7727 ExprEvaluatorBase(EvalInfo &Info) : Info(Info) {}
7729 EvalInfo &getEvalInfo() { return Info; }
8370 LValueExprEvaluatorBase(EvalInfo &Info, LValue &Result, bool InvalidBaseOK)
8491 LValueExprEvaluator(EvalInfo &Info, LValue &Result, bool InvalidBaseOK) :
8548 static bool HandleLambdaCapture(EvalInfo &Info, const Expr *E, LValue &Result,
8599 static bool EvaluateLValue(const Expr *E, LValue &Result, EvalInfo &Info,
8736 if (Info.EvalMode == EvalInfo::EM_ConstantFold)
9028 static bool evaluateLValueAsAllocSize(EvalInfo &Info, APValue::LValueBase Base,
9082 PointerExprEvaluator(EvalInfo &info, LValue &Result, bool InvalidBaseOK)
9198 static bool EvaluatePointer(const Expr* E, LValue& Result, EvalInfo &Info,
9409 static CharUnits GetAlignOfType(EvalInfo &Info, QualType T,
9435 static CharUnits GetAlignOfExpr(EvalInfo &Info, const Expr *E,
9456 static CharUnits getBaseAlignment(EvalInfo &Info, const LValue &Value) {
9467 EvalInfo &Info, APSInt &Alignment) {
9883 static bool EvaluateArrayNewInitList(EvalInfo &Info, LValue &This,
9886 static bool EvaluateArrayNewConstructExpr(EvalInfo &Info, LValue &This,
10025 EvalInfo &Info;
10113 MemberPointerExprEvaluator(EvalInfo &Info, MemberPtr &Result)
10130 EvalInfo &Info) {
10198 RecordExprEvaluator(EvalInfo &info, const LValue &This, APValue &Result)
10236 static bool HandleClassZeroInitialization(EvalInfo &Info, const Expr *E,
10355 EvalInfo::EvaluatingConstructorRAII EvalObj(
10646 APValue &Result, EvalInfo &Info) {
10664 TemporaryExprEvaluator(EvalInfo &Info, LValue &Result) :
10702 static bool EvaluateTemporary(const Expr *E, LValue &Result, EvalInfo &Info) {
10718 VectorExprEvaluator(EvalInfo &info, APValue &Result)
10749 static bool EvaluateVector(const Expr* E, APValue& Result, EvalInfo &Info) {
10996 static bool handleVectorElementCast(EvalInfo &Info, const FPOptions FPO,
11054 static bool handleVectorShuffle(EvalInfo &Info, const ShuffleVectorExpr *E,
11123 ArrayExprEvaluator(EvalInfo &Info, const LValue &This, APValue &Result)
11182 APValue &Result, EvalInfo &Info) {
11189 static bool EvaluateArrayNewInitList(EvalInfo &Info, LValue &This,
11199 static bool EvaluateArrayNewConstructExpr(EvalInfo &Info, LValue &This,
11379 for (EvalInfo::ArrayInitLoopIndex Index(Info); Index != Elements; ++Index) {
11509 IntExprEvaluator(EvalInfo &info, APValue &result)
11651 FixedPointExprEvaluator(EvalInfo &info, APValue &result)
11703 EvalInfo &Info) {
11709 static bool EvaluateInteger(const Expr *E, APSInt &Result, EvalInfo &Info) {
11731 EvalInfo &Info) {
11747 EvalInfo &Info) {
11980 static bool EvaluateBuiltinConstantP(EvalInfo &Info, const Expr *Arg) {
12233 static void addFlexibleArrayMemberInitSize(EvalInfo &Info, const QualType &T,
12249 static bool determineEndOffset(EvalInfo &Info, SourceLocation ExprLoc,
12334 EvalInfo &Info, uint64_t &Size) {
12382 static bool getBuiltinAlignArguments(const CallExpr *E, EvalInfo &Info,
12432 case EvalInfo::EM_ConstantExpression:
12433 case EvalInfo::EM_ConstantFold:
12434 case EvalInfo::EM_IgnoreSideEffects:
12437 case EvalInfo::EM_ConstantExpressionUnevaluated:
13229 void startSpeculativeEval(EvalInfo &Info) {
13240 EvalInfo &Info;
13523 EvaluateComparisonBinaryOperator(EvalInfo &Info, const BinaryOperator *E,
14367 Info.EvalMode == EvalInfo::EM_ConstantExpression &&
14704 FloatExprEvaluator(EvalInfo &info, APFloat &result)
14731 static bool EvaluateFloat(const Expr* E, APFloat& Result, EvalInfo &Info) {
15006 ComplexExprEvaluator(EvalInfo &info, ComplexValue &Result)
15030 EvalInfo &Info) {
15564 AtomicExprEvaluator(EvalInfo &Info, const LValue *This, APValue &Result)
15597 EvalInfo &Info) {
15612 VoidExprEvaluator(EvalInfo &Info) : ExprEvaluatorBaseTy(Info) {}
15723 static bool EvaluateVoid(const Expr *E, EvalInfo &Info) {
15733 static bool Evaluate(APValue &Result, EvalInfo &Info, const Expr *E) {
15819 static bool EvaluateInPlace(APValue &Result, EvalInfo &Info, const LValue &This,
15847 static bool EvaluateAsRValue(EvalInfo &Info, const Expr *E, APValue &Result) {
15928 const ASTContext &Ctx, EvalInfo &Info) {
15940 EvalInfo &Info) {
15956 EvalInfo &Info) {
15981 EvalInfo Info(Ctx, Result, EvalInfo::EM_IgnoreSideEffects);
16002 EvalInfo Info(Ctx, Result, EvalInfo::EM_IgnoreSideEffects);
16013 EvalInfo Info(Ctx, Result, EvalInfo::EM_IgnoreSideEffects);
16044 EvalInfo Info(Ctx, Result, EvalInfo::EM_ConstantFold);
16063 EvalInfo Info(Ctx, EStatus,
16064 IsConstantDestruction ? EvalInfo::EM_ConstantExpression
16065 : EvalInfo::EM_ConstantFold);
16067 EvalInfo::EvaluatingDeclKind::Dtor);
16092 EvalInfo::EvaluationMode EM = EvalInfo::EM_ConstantExpression;
16093 EvalInfo Info(Ctx, Result, EM);
16171 EvalInfo Info(Ctx, EStatus,
16174 ? EvalInfo::EM_ConstantExpression
16175 : EvalInfo::EM_ConstantFold);
16270 EvalInfo Info(Ctx, EVResult, EvalInfo::EM_IgnoreSideEffects);
16289 EvalInfo Info(Ctx, EVResult, EvalInfo::EM_IgnoreSideEffects);
16309 EvalInfo Info(Ctx, EVResult, EvalInfo::EM_IgnoreSideEffects);
16364 EvalInfo Info(Ctx, Status, EvalInfo::EM_ConstantExpression);
16839 EvalInfo Info(Ctx, Status, EvalInfo::EM_IgnoreSideEffects);
16868 EvalInfo Info(Ctx, Status, EvalInfo::EM_ConstantExpression);
16904 EvalInfo Info(Ctx, Status, EvalInfo::EM_ConstantExpressionUnevaluated);
16980 EvalInfo Info(FD->getASTContext(), Status, EvalInfo::EM_ConstantExpression);
17028 EvalInfo Info(FD->getASTContext(), Status,
17029 EvalInfo::EM_ConstantExpressionUnevaluated);
17048 EvalInfo Info(Ctx, Status, EvalInfo::EM_ConstantFold);
17053 EvalInfo &Info, std::string *StringResult) {
17106 EvalInfo Info(Ctx, Status, EvalInfo::EM_ConstantFold);
17120 EvalInfo Info(Ctx, Status, EvalInfo::EM_ConstantExpression);
17156 EvalInfo Info(Ctx, Status, EvalInfo::EM_ConstantFold);