Lines Matching defs:EvalInfo
82 class EvalInfo;
394 bool checkSubobject(EvalInfo &Info, const Expr *E, CheckSubobjectKind CSK);
461 void diagnoseUnsizedArrayPointerArithmetic(EvalInfo &Info, const Expr *E);
462 void diagnosePointerArithmetic(EvalInfo &Info, const Expr *E,
465 void adjustIndex(EvalInfo &Info, const Expr *E, APSInt N) {
546 EvalInfo &Info;
612 CallStackFrame(EvalInfo &Info, SourceRange CallRange,
721 static bool HandleDestruction(EvalInfo &Info, const Expr *E,
723 static bool HandleDestruction(EvalInfo &Info, SourceLocation Loc,
744 bool endLifetime(EvalInfo &Info, bool RunDestructors) {
834 /// EvalInfo - This is a private struct used by the evaluator to capture
848 class EvalInfo : public interp::State {
911 EvalInfo &EI;
914 EvaluatingConstructorRAII(EvalInfo &EI, ObjectUnderConstruction Object,
935 EvalInfo &EI;
938 EvaluatingDestructorRAII(EvalInfo &EI, ObjectUnderConstruction Object)
1023 EvalInfo(const ASTContext &C, Expr::EvalStatus &S, EvaluationMode Mode)
1035 ~EvalInfo() {
1318 EvalInfo &Info;
1322 ArrayInitLoopIndex(EvalInfo &Info)
1334 EvalInfo &Info;
1337 EvalInfo::EvaluationMode OldMode;
1339 explicit FoldConstant(EvalInfo &Info, bool Enabled)
1347 Info.EvalMode = EvalInfo::EM_ConstantFold;
1361 EvalInfo &Info;
1362 EvalInfo::EvaluationMode OldMode;
1363 explicit IgnoreSideEffectsRAII(EvalInfo &Info)
1365 Info.EvalMode = EvalInfo::EM_IgnoreSideEffects;
1374 EvalInfo *Info = nullptr;
1397 EvalInfo &Info, SmallVectorImpl<PartialDiagnosticAt> *NewDiag = nullptr)
1422 EvalInfo &Info;
1425 ScopeRAII(EvalInfo &Info)
1444 static bool cleanup(EvalInfo &Info, bool RunDestructors,
1477 bool SubobjectDesignator::checkSubobject(EvalInfo &Info, const Expr *E,
1493 void SubobjectDesignator::diagnoseUnsizedArrayPointerArithmetic(EvalInfo &Info,
1500 void SubobjectDesignator::diagnosePointerArithmetic(EvalInfo &Info,
1515 CallStackFrame::CallStackFrame(EvalInfo &Info, SourceRange CallRange,
1727 bool checkNullPointer(EvalInfo &Info, const Expr *E,
1734 bool checkNullPointerForFoldAccess(EvalInfo &Info, const Expr *E,
1743 bool checkSubobject(EvalInfo &Info, const Expr *E, CheckSubobjectKind CSK) {
1748 void addDecl(EvalInfo &Info, const Expr *E,
1753 void addUnsizedArray(EvalInfo &Info, const Expr *E, QualType ElemTy) {
1765 void addArray(EvalInfo &Info, const Expr *E, const ConstantArrayType *CAT) {
1769 void addComplex(EvalInfo &Info, const Expr *E, QualType EltTy, bool Imag) {
1773 void addVectorElement(EvalInfo &Info, const Expr *E, QualType EltTy,
1781 void adjustOffsetAndIndex(EvalInfo &Info, const Expr *E,
1906 static bool Evaluate(APValue &Result, EvalInfo &Info, const Expr *E);
1907 static bool EvaluateInPlace(APValue &Result, EvalInfo &Info,
1910 static bool EvaluateLValue(const Expr *E, LValue &Result, EvalInfo &Info,
1912 static bool EvaluatePointer(const Expr *E, LValue &Result, EvalInfo &Info,
1915 EvalInfo &Info);
1916 static bool EvaluateTemporary(const Expr *E, LValue &Result, EvalInfo &Info);
1917 static bool EvaluateInteger(const Expr *E, APSInt &Result, EvalInfo &Info);
1919 EvalInfo &Info);
1920 static bool EvaluateFloat(const Expr *E, APFloat &Result, EvalInfo &Info);
1921 static bool EvaluateComplex(const Expr *E, ComplexValue &Res, EvalInfo &Info);
1923 EvalInfo &Info);
1924 static bool EvaluateAsRValue(EvalInfo &Info, const Expr *E, APValue &Result);
1926 EvalInfo &Info,
1931 EvalInfo &Info);
1935 EvalInfo &Info);
2001 APValue *EvalInfo::createHeapAlloc(const Expr *E, QualType T, LValue &LV) {
2079 static bool EvaluateIgnoredValue(EvalInfo &Info, const Expr *E) {
2183 static bool GetLValueBaseAsString(const EvalInfo &Info, const LValue &LVal,
2225 static bool ArePotentiallyOverlappingStringLiterals(const EvalInfo &Info,
2292 static void NoteLValueLocation(EvalInfo &Info, APValue::LValueBase Base) {
2336 EvalInfo &Info, SourceLocation DiagLoc,
2345 static bool CheckLValueConstantExpression(EvalInfo &Info, SourceLocation Loc,
2515 static bool CheckMemberPointerConstantExpression(EvalInfo &Info,
2535 static bool CheckLiteralType(EvalInfo &Info, const Expr *E,
2570 EvalInfo &Info, SourceLocation DiagLoc,
2664 static bool CheckConstantExpression(EvalInfo &Info, SourceLocation DiagLoc,
2679 static bool CheckFullyInitialized(EvalInfo &Info, SourceLocation DiagLoc,
2689 static bool CheckMemoryLeaks(EvalInfo &Info) {
2760 EvalInfo &Info) {
2770 static bool HandleOverflow(EvalInfo &Info, const Expr *E,
2777 static bool HandleFloatToIntCast(EvalInfo &Info, const Expr *E,
2797 static llvm::RoundingMode getActiveRoundingMode(EvalInfo &Info, const Expr *E) {
2806 static bool checkFloatingPointResult(EvalInfo &Info, const Expr *E,
2846 static bool HandleFloatToFloatCast(EvalInfo &Info, const Expr *E,
2862 static APSInt HandleIntToIntCast(EvalInfo &Info, const Expr *E,
2875 static bool HandleIntToFloatCast(EvalInfo &Info, const Expr *E,
2885 static bool truncateBitfieldValue(EvalInfo &Info, const Expr *E,
2910 static bool CheckedIntArithmetic(EvalInfo &Info, const Expr *E,
2934 static bool handleIntIntBinOp(EvalInfo &Info, const BinaryOperator *E,
3053 static bool handleFloatFloatBinOp(EvalInfo &Info, const BinaryOperator *E,
3177 static bool handleVectorVectorBinOp(EvalInfo &Info, const BinaryOperator *E,
3248 static bool CastToDerivedClass(EvalInfo &Info, const Expr *E, LValue &Result,
3277 static bool HandleLValueDirectBase(EvalInfo &Info, const Expr *E, LValue &Obj,
3291 static bool HandleLValueBase(EvalInfo &Info, const Expr *E, LValue &Obj,
3316 static bool HandleLValueBasePath(EvalInfo &Info, const CastExpr *E,
3330 static bool CastToBaseClass(EvalInfo &Info, const Expr *E, LValue &Result,
3346 static bool HandleLValueMember(EvalInfo &Info, const Expr *E, LValue &LVal,
3361 static bool HandleLValueIndirectMember(EvalInfo &Info, const Expr *E,
3376 static bool HandleSizeof(EvalInfo &Info, SourceLocation Loc, QualType Type,
3410 static bool HandleLValueArrayAdjustment(EvalInfo &Info, const Expr *E,
3421 static bool HandleLValueArrayAdjustment(EvalInfo &Info, const Expr *E,
3433 static bool HandleLValueComplexElement(EvalInfo &Info, const Expr *E,
3446 static bool HandleLValueVectorElement(EvalInfo &Info, const Expr *E,
3468 static bool evaluateVarDeclInit(EvalInfo &Info, const Expr *E,
3653 static APSInt extractStringLiteralCharacter(EvalInfo &Info, const Expr *Lit,
3685 static void expandStringLiteral(EvalInfo &Info, const StringLiteral *S,
3760 static bool diagnoseMutableFields(EvalInfo &Info, const Expr *E, AccessKinds AK,
3793 static bool lifetimeStartedInEvaluation(EvalInfo &Info,
3801 case EvalInfo::EvaluatingDeclKind::None:
3804 case EvalInfo::EvaluatingDeclKind::Ctor:
3816 case EvalInfo::EvaluatingDeclKind::Dtor:
3833 static bool CheckArraySize(EvalInfo &Info, const ConstantArrayType *CAT,
3856 bool mayAccessMutableMembers(EvalInfo &Info, AccessKinds AK) const {
3894 findSubobject(EvalInfo &Info, const Expr *E, const CompleteObject &Obj,
4132 EvalInfo &Info;
4157 static bool extractSubobject(EvalInfo &Info, const Expr *E,
4168 EvalInfo &Info;
4215 static bool modifySubobject(EvalInfo &Info, const Expr *E,
4282 static CompleteObject findCompleteObject(EvalInfo &Info, const Expr *E,
4565 handleLValueToRValueConversion(EvalInfo &Info, const Expr *Conv, QualType Type,
4645 static bool handleAssignment(EvalInfo &Info, const Expr *E, const LValue &LVal,
4661 EvalInfo &Info;
4789 static bool handleCompoundAssignment(EvalInfo &Info,
4811 EvalInfo &Info;
4939 static bool handleIncDec(EvalInfo &Info, const Expr *E, const LValue &LVal,
4956 static bool EvaluateObjectArgument(EvalInfo &Info, const Expr *Object,
4985 static const ValueDecl *HandleMemberPointerAccess(EvalInfo &Info,
5067 static const ValueDecl *HandleMemberPointerAccess(EvalInfo &Info,
5087 static bool HandleBaseToDerivedCast(EvalInfo &Info, const CastExpr *E,
5191 static bool EvaluateVarDecl(EvalInfo &Info, const VarDecl *VD) {
5221 static bool EvaluateDecl(EvalInfo &Info, const Decl *D) {
5235 static bool EvaluateDependentExpr(const Expr *E, EvalInfo &Info) {
5245 static bool EvaluateCond(EvalInfo &Info, const VarDecl *CondDecl,
5281 static EvalStmtResult EvaluateStmt(StmtResult &Result, EvalInfo &Info,
5286 static EvalStmtResult EvaluateLoopBody(StmtResult &Result, EvalInfo &Info,
5310 static EvalStmtResult EvaluateSwitch(StmtResult &Result, EvalInfo &Info,
5388 static bool CheckLocalVariableDeclaration(EvalInfo &Info, const VarDecl *VD) {
5403 static EvalStmtResult EvaluateStmt(StmtResult &Result, EvalInfo &Info,
5878 static bool CheckTrivialDefaultConstructor(EvalInfo &Info, SourceLocation Loc,
5903 static bool CheckConstexprFunction(EvalInfo &Info, SourceLocation CallLoc,
5980 static bool checkDynamicType(EvalInfo &Info, const Expr *E, const LValue &This,
6031 checkNonVirtualMemberCallThisPointer(EvalInfo &Info, const Expr *E,
6056 static std::optional<DynamicType> ComputeDynamicType(EvalInfo &Info,
6120 EvalInfo &Info, const Expr *E, LValue &This, const CXXMethodDecl *Found,
6184 static bool HandleCovariantReturnAdjustment(EvalInfo &Info, const Expr *E,
6225 static bool HandleDynamicCast(EvalInfo &Info, const ExplicitCastExpr *E,
6321 EvalInfo &Info;
6373 static bool MaybeHandleUnionActiveMemberChange(EvalInfo &Info,
6477 CallRef Call, EvalInfo &Info,
6503 EvalInfo &Info, const FunctionDecl *Callee,
6540 static bool handleTrivialCopy(EvalInfo &Info, const ParmVarDecl *Param,
6563 CallRef Call, const Stmt *Body, EvalInfo &Info,
6618 EvalInfo &Info, APValue &Result) {
6629 EvalInfo::EvaluatingConstructorRAII EvalObj(
6832 EvalInfo &Info, APValue &Result) {
6842 static bool HandleDestructionImpl(EvalInfo &Info, SourceRange CallRange,
6948 EvalInfo::EvaluatingDestructorRAII EvalObj(
7019 EvalInfo &Info;
7043 static bool HandleDestruction(EvalInfo &Info, const Expr *E,
7051 static bool HandleDestruction(EvalInfo &Info, SourceLocation Loc,
7065 static bool HandleOperatorNewCall(EvalInfo &Info, const CallExpr *E,
7146 static std::optional<DynAlloc *> CheckDeleteKind(EvalInfo &Info, const Expr *E,
7194 static bool HandleOperatorDeleteCall(EvalInfo &Info, const CallExpr *E) {
7283 EvalInfo &Info;
7287 APValueToBufferConverter(EvalInfo &Info, CharUnits ObjectWidth,
7498 convert(EvalInfo &Info, const APValue &Src, const CastExpr *BCE) {
7509 EvalInfo &Info;
7513 BufferToAPValueConverter(EvalInfo &Info, const BitCastBuffer &Buffer,
7778 static std::optional<APValue> convert(EvalInfo &Info, BitCastBuffer &Buffer,
7786 QualType Ty, EvalInfo *Info,
7863 static bool checkBitCastConstexprEligibility(EvalInfo *Info,
7874 static bool handleRValueToRValueBitCast(EvalInfo &Info, APValue &DestValue,
7899 static bool handleLValueToRValueBitCast(EvalInfo &Info, APValue &DestValue,
7978 EvalInfo &Info;
7995 ExprEvaluatorBase(EvalInfo &Info) : Info(Info) {}
7997 EvalInfo &getEvalInfo() { return Info; }
8638 LValueExprEvaluatorBase(EvalInfo &Info, LValue &Result, bool InvalidBaseOK)
8759 LValueExprEvaluator(EvalInfo &Info, LValue &Result, bool InvalidBaseOK) :
8820 static bool HandleLambdaCapture(EvalInfo &Info, const Expr *E, LValue &Result,
8872 static bool EvaluateLValue(const Expr *E, LValue &Result, EvalInfo &Info,
9026 if (Info.EvalMode == EvalInfo::EM_ConstantFold)
9366 static bool evaluateLValueAsAllocSize(EvalInfo &Info, APValue::LValueBase Base,
9420 PointerExprEvaluator(EvalInfo &info, LValue &Result, bool InvalidBaseOK)
9536 static bool EvaluatePointer(const Expr* E, LValue& Result, EvalInfo &Info,
9793 static CharUnits getBaseAlignment(EvalInfo &Info, const LValue &Value) {
9804 EvalInfo &Info, APSInt &Alignment) {
10216 static bool EvaluateArrayNewInitList(EvalInfo &Info, LValue &This,
10219 static bool EvaluateArrayNewConstructExpr(EvalInfo &Info, LValue &This,
10367 EvalInfo &Info;
10463 MemberPointerExprEvaluator(EvalInfo &Info, MemberPtr &Result)
10480 EvalInfo &Info) {
10548 RecordExprEvaluator(EvalInfo &info, const LValue &This, APValue &Result)
10586 static bool HandleClassZeroInitialization(EvalInfo &Info, const Expr *E,
10705 EvalInfo::EvaluatingConstructorRAII EvalObj(
10996 APValue &Result, EvalInfo &Info) {
11014 TemporaryExprEvaluator(EvalInfo &Info, LValue &Result) :
11052 static bool EvaluateTemporary(const Expr *E, LValue &Result, EvalInfo &Info) {
11068 VectorExprEvaluator(EvalInfo &info, APValue &Result)
11100 static bool EvaluateVector(const Expr* E, APValue& Result, EvalInfo &Info) {
11356 static bool handleVectorElementCast(EvalInfo &Info, const FPOptions FPO,
11484 static bool handleVectorShuffle(EvalInfo &Info, const ShuffleVectorExpr *E,
11553 ArrayExprEvaluator(EvalInfo &Info, const LValue &This, APValue &Result)
11612 APValue &Result, EvalInfo &Info) {
11619 static bool EvaluateArrayNewInitList(EvalInfo &Info, LValue &This,
11629 static bool EvaluateArrayNewConstructExpr(EvalInfo &Info, LValue &This,
11812 for (EvalInfo::ArrayInitLoopIndex Index(Info); Index != Elements; ++Index) {
11942 IntExprEvaluator(EvalInfo &info, APValue &result)
12097 FixedPointExprEvaluator(EvalInfo &info, APValue &result)
12149 EvalInfo &Info) {
12155 static bool EvaluateInteger(const Expr *E, APSInt &Result, EvalInfo &Info) {
12177 EvalInfo &Info) {
12193 EvalInfo &Info) {
12429 static bool EvaluateBuiltinConstantP(EvalInfo &Info, const Expr *Arg) {
12682 static void addFlexibleArrayMemberInitSize(EvalInfo &Info, const QualType &T,
12698 static bool determineEndOffset(EvalInfo &Info, SourceLocation ExprLoc,
12787 EvalInfo &Info, uint64_t &Size) {
12835 static bool getBuiltinAlignArguments(const CallExpr *E, EvalInfo &Info,
12885 case EvalInfo::EM_ConstantExpression:
12886 case EvalInfo::EM_ConstantFold:
12887 case EvalInfo::EM_IgnoreSideEffects:
12890 case EvalInfo::EM_ConstantExpressionUnevaluated:
13948 void startSpeculativeEval(EvalInfo &Info) {
13959 EvalInfo &Info;
14242 EvaluateComparisonBinaryOperator(EvalInfo &Info, const BinaryOperator *E,
15106 Info.EvalMode == EvalInfo::EM_ConstantExpression &&
15447 FloatExprEvaluator(EvalInfo &info, APFloat &result)
15474 static bool EvaluateFloat(const Expr* E, APFloat& Result, EvalInfo &Info) {
15781 ComplexExprEvaluator(EvalInfo &info, ComplexValue &Result)
15805 EvalInfo &Info) {
16339 AtomicExprEvaluator(EvalInfo &Info, const LValue *This, APValue &Result)
16372 EvalInfo &Info) {
16387 VoidExprEvaluator(EvalInfo &Info) : ExprEvaluatorBaseTy(Info) {}
16498 static bool EvaluateVoid(const Expr *E, EvalInfo &Info) {
16508 static bool Evaluate(APValue &Result, EvalInfo &Info, const Expr *E) {
16594 static bool EvaluateInPlace(APValue &Result, EvalInfo &Info, const LValue &This,
16622 static bool EvaluateAsRValue(EvalInfo &Info, const Expr *E, APValue &Result) {
16715 const ASTContext &Ctx, EvalInfo &Info) {
16727 EvalInfo &Info) {
16743 EvalInfo &Info) {
16768 EvalInfo Info(Ctx, Result, EvalInfo::EM_IgnoreSideEffects);
16789 EvalInfo Info(Ctx, Result, EvalInfo::EM_IgnoreSideEffects);
16800 EvalInfo Info(Ctx, Result, EvalInfo::EM_IgnoreSideEffects);
16831 EvalInfo Info(Ctx, Result, EvalInfo::EM_ConstantFold);
16850 EvalInfo Info(Ctx, EStatus,
16851 IsConstantDestruction ? EvalInfo::EM_ConstantExpression
16852 : EvalInfo::EM_ConstantFold);
16854 EvalInfo::EvaluatingDeclKind::Dtor);
16879 EvalInfo::EvaluationMode EM = EvalInfo::EM_ConstantExpression;
16880 EvalInfo Info(Ctx, Result, EM);
16958 EvalInfo Info(Ctx, EStatus,
16961 ? EvalInfo::EM_ConstantExpression
16962 : EvalInfo::EM_ConstantFold);
17057 EvalInfo Info(Ctx, EVResult, EvalInfo::EM_IgnoreSideEffects);
17076 EvalInfo Info(Ctx, EVResult, EvalInfo::EM_IgnoreSideEffects);
17096 EvalInfo Info(Ctx, EVResult, EvalInfo::EM_IgnoreSideEffects);
17151 EvalInfo Info(Ctx, Status, EvalInfo::EM_ConstantExpression);
17629 EvalInfo Info(Ctx, Status, EvalInfo::EM_IgnoreSideEffects);
17658 EvalInfo Info(Ctx, Status, EvalInfo::EM_ConstantExpression);
17694 EvalInfo Info(Ctx, Status, EvalInfo::EM_ConstantExpressionUnevaluated);
17770 EvalInfo Info(FD->getASTContext(), Status, EvalInfo::EM_ConstantExpression);
17818 EvalInfo Info(FD->getASTContext(), Status,
17819 EvalInfo::EM_ConstantExpressionUnevaluated);
17838 EvalInfo Info(Ctx, Status, EvalInfo::EM_ConstantFold);
17843 EvalInfo &Info, std::string *StringResult) {
17896 EvalInfo Info(Ctx, Status, EvalInfo::EM_ConstantFold);
17910 EvalInfo Info(Ctx, Status, EvalInfo::EM_ConstantExpression);
17946 EvalInfo Info(Ctx, Status, EvalInfo::EM_ConstantFold);
17952 EvalInfo &Info;
17964 EvalInfo &Info = IEE.Info;