|
clang 24.0.0git
|
Interpreter context. More...
#include "/work/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/AST/ByteCode/InterpState.h"
Public Member Functions | |
| InterpState (const State &Parent, Program &P, InterpStack &Stk, Context &Ctx, SourceMapper *M=nullptr) | |
| InterpState (const State &Parent, Program &P, InterpStack &Stk, Context &Ctx, const Function *Func) | |
| ~InterpState () | |
| void | cleanup () |
| InterpState (const InterpState &)=delete | |
| InterpState & | operator= (const InterpState &)=delete |
| bool | diagnosing () const |
| const Frame * | getCurrentFrame () override |
| unsigned | getCallStackDepth () override |
| bool | stepsLeft () const override |
| bool | inConstantContext () const |
| void | deallocate (Block *B) |
| Deallocates a pointer. | |
| SourceInfo | getSource (CodePtr PC) const |
| Delegates source mapping to the mapper. | |
| Context & | getContext () const |
| void | setEvalLocation (SourceLocation SL) |
| DynamicAllocator & | getAllocator () |
| bool | maybeDiagnoseDanglingAllocations () |
| Diagnose any dynamic allocations that haven't been freed yet. | |
| StdAllocatorCaller | getStdAllocatorCaller (StringRef Name) const |
| void * | allocate (size_t Size, unsigned Align=8) const |
| template<typename T> | |
| T * | allocate (size_t Num=1) const |
| template<typename T> | |
| T | allocAP (unsigned BitWidth) |
| Floating | allocFloat (const llvm::fltSemantics &Sem) |
| const CXXRecordDecl ** | allocMemberPointerPath (unsigned Length) |
| PointerPathEntry * | allocPointerPath (unsigned Length, const PointerPathEntry *OldPP) |
| PointerPathEntry * | extendPointerPath (unsigned NewLength, const PointerPathEntry *OldPP, PointerPathEntry NewEntry) |
Allocate a new pointer path of Length NewLength. | |
| bool | noteStep (CodePtr OpPC) |
| Note that a step has been executed. | |
| bool | initializingBlock (const Block *B) const |
| bool | lifetimeStartedInEvaluation (const Block *B) const |
| bool | checkingConstantDestruction () const |
| Return if we're checking if a global variable has a constant destructor. | |
| bool | checkingConstantDestruction (const Pointer &Ptr) const |
| Return if we're checking if a global variable has a constant destructor and the given pointer is pointing to the variable we're checking that for. | |
| bool | checkingConstantDestruction (const VarDecl *VD) const |
| unsigned | newStringID () |
| Public Member Functions inherited from clang::interp::State | |
| State (ASTContext &ASTCtx, Expr::EvalStatus &EvalStatus) | |
| virtual | ~State () |
| Expr::EvalStatus & | getEvalStatus () const |
| ASTContext & | getASTContext () const |
| const LangOptions & | getLangOpts () const |
| bool | emitRelaxedDiag (SourceLocation Loc, diag::kind DiagId) |
If DiagId should be relaxed as per the current evaluation settings, emit it as a warning instead of an error. | |
| bool | noteSideEffect () const |
| Note that we have had a side-effect, and determine whether we should keep evaluating. | |
| bool | keepEvaluatingAfterFailure () const |
| Should we continue evaluation as much as possible after encountering a construct which can't be reduced to a value? | |
| bool | keepEvaluatingAfterSideEffect () const |
| Should we continue evaluation after encountering a side-effect that we couldn't model? | |
| bool | noteUndefinedBehavior () const |
| Note that we hit something that was technically undefined behavior, but that we can evaluate past it (such as signed overflow or floating-point division by zero.) | |
| bool | checkingPotentialConstantExpression () const |
| Are we checking whether the expression is a potential constant expression? | |
| bool | checkingForUndefinedBehavior () const |
| Are we checking an expression for overflow? | |
| OptionalDiagnostic | FFDiag (SourceLocation Loc, diag::kind DiagId=diag::note_invalid_subexpr_in_const_expr, unsigned ExtraNotes=0) |
| Diagnose that the evaluation could not be folded (FF => FoldFailure) | |
| OptionalDiagnostic | FFDiag (const Expr *E, diag::kind DiagId=diag::note_invalid_subexpr_in_const_expr, unsigned ExtraNotes=0) |
| OptionalDiagnostic | FFDiag (SourceInfo SI, diag::kind DiagId=diag::note_invalid_subexpr_in_const_expr, unsigned ExtraNotes=0) |
| OptionalDiagnostic | CCEDiag (SourceLocation Loc, diag::kind DiagId=diag::note_invalid_subexpr_in_const_expr, unsigned ExtraNotes=0) |
| Diagnose that the evaluation does not produce a C++11 core constant expression. | |
| OptionalDiagnostic | CCEDiag (const Expr *E, diag::kind DiagId=diag::note_invalid_subexpr_in_const_expr, unsigned ExtraNotes=0) |
| OptionalDiagnostic | CCEDiag (SourceInfo SI, diag::kind DiagId=diag::note_invalid_subexpr_in_const_expr, unsigned ExtraNotes=0) |
| OptionalDiagnostic | Note (SourceLocation Loc, diag::kind DiagId) |
| Add a note to a prior diagnostic. | |
| OptionalDiagnostic | Note (SourceInfo Loc, diag::kind DiagId) |
| void | addNotes (ArrayRef< PartialDiagnosticAt > Diags) |
| Add a stack of notes to a prior diagnostic. | |
| DiagnosticBuilder | report (SourceLocation Loc, diag::kind DiagId) |
| Directly reports a diagnostic message. | |
Public Attributes | |
| CodePtr | PC |
| Program & | P |
| Reference to the module containing all bytecode. | |
| InterpStack & | Stk |
| Temporary stack. | |
| Context & | Ctx |
| Interpreter Context. | |
| InterpFrame | BottomFrame |
| Bottom function frame. | |
| InterpFrame * | Current = nullptr |
| The current frame. | |
| SourceLocation | EvalLocation |
| Source location of the evaluating expression. | |
| const VarDecl * | EvaluatingDecl = nullptr |
| Declaration we're initializing/evaluting, if any. | |
| unsigned | StepsLeft = 1 |
| Steps left during evaluation. | |
| const bool | InfiniteSteps = false |
| Whether infinite evaluation steps have been requested. | |
| const unsigned | EvalID |
| ID identifying this evaluation. | |
| unsigned | StringID = 0 |
| EvaluationKind | EvalKind = EvaluationKind::None |
| SmallVectorImpl< PartialDiagnosticAt > * | PrevDiags = nullptr |
| Things needed to do speculative execution. | |
| bool | PrevDiagsEmitted = false |
| unsigned | SpeculationDepth = 0 |
| unsigned | DiagIgnoreDepth = 0 |
| std::optional< bool > | ConstantContextOverride |
| llvm::SmallVector< std::pair< const Expr *, const LifetimeExtendedTemporaryDecl * > > | SeenGlobalTemporaries |
| llvm::SmallVector< PtrView > | InitializingPtrs |
| List of blocks we're currently running either constructors or destructors for. | |
| Public Attributes inherited from clang::interp::State | |
| bool | InConstantContext = false |
| Whether or not we're in a context where the front end requires a constant value. | |
| bool | CheckingPotentialConstantExpression = false |
| Whether we're checking that an expression is a potential constant expression. | |
| bool | CheckingForUndefinedBehavior = false |
| Whether we're checking for an expression that has undefined behavior. | |
| EvaluationMode | EvalMode |
| ASTContext & | Ctx |
| Expr::EvalStatus & | EvalStatus |
Friends | |
| class | EvaluationResult |
| class | InterpStateCCOverride |
Interpreter context.
Definition at line 43 of file InterpState.h.
| InterpState::InterpState | ( | const State & | Parent, |
| Program & | P, | ||
| InterpStack & | Stk, | ||
| Context & | Ctx, | ||
| SourceMapper * | M = nullptr ) |
Definition at line 20 of file InterpState.cpp.
References BottomFrame, clang::interp::State::CheckingForUndefinedBehavior, clang::interp::State::CheckingPotentialConstantExpression, Ctx, Current, EvalID, clang::interp::State::EvalMode, clang::interp::State::getASTContext(), clang::interp::State::getEvalStatus(), clang::interp::State::getLangOpts(), clang::interp::State::InConstantContext, InfiniteSteps, P, clang::interp::State::State(), StepsLeft, and Stk.
Referenced by InterpState(), and operator=().
| InterpState::InterpState | ( | const State & | Parent, |
| Program & | P, | ||
| InterpStack & | Stk, | ||
| Context & | Ctx, | ||
| const Function * | Func ) |
Definition at line 33 of file InterpState.cpp.
References BottomFrame, clang::interp::State::CheckingForUndefinedBehavior, clang::interp::State::CheckingPotentialConstantExpression, Ctx, Current, EvalID, clang::interp::State::EvalMode, clang::Func, clang::interp::State::getASTContext(), clang::interp::State::getEvalStatus(), clang::interp::State::getLangOpts(), clang::interp::State::InConstantContext, InfiniteSteps, clang::nullptr, P, clang::interp::State::State(), StepsLeft, and Stk.
| InterpState::~InterpState | ( | ) |
Definition at line 53 of file InterpState.cpp.
References BottomFrame, Current, Next, and P.
|
delete |
References InterpState().
Definition at line 101 of file InterpState.h.
References allocate(), and clang::T.
Referenced by clang::interp::AddSubMulHelper(), clang::interp::assignIntegral(), clang::interp::BitAnd(), clang::interp::BitCastPrim(), clang::interp::BitOr(), clang::interp::BitXor(), clang::interp::CastAP(), clang::interp::CastAPS(), clang::interp::CastPointerIntegralAP(), clang::interp::CastPointerIntegralAPS(), clang::interp::Comp(), clang::interp::Const(), clang::interp::Div(), clang::interp::Divc(), clang::interp::DoBitCastPtr(), clang::interp::floatAPCast(), clang::interp::IncDecHelper(), clang::interp::InitBitField(), clang::interp::InitBitFieldActivate(), clang::interp::Mulc(), clang::interp::Neg(), clang::interp::pushInteger(), clang::interp::Rem(), clang::interp::Shl(), clang::interp::Shr(), clang::interp::ZeroIntAP(), and clang::interp::ZeroIntAPS().
Definition at line 97 of file InterpState.h.
References allocate(), clang::Num, and clang::T.
Definition at line 92 of file InterpState.h.
Referenced by allocAP(), allocate(), allocFloat(), allocMemberPointerPath(), allocPointerPath(), and extendPointerPath().
|
inline |
Definition at line 110 of file InterpState.h.
References allocate(), and clang::interp::Floating::singleWord().
Referenced by clang::interp::abs(), clang::interp::Addf(), clang::interp::BitCastPrim(), clang::interp::CastFixedPointFloating(), clang::interp::CastFP(), clang::interp::CastIntegralFloating(), clang::interp::ConstFloat(), clang::interp::Divc(), clang::interp::Divf(), clang::interp::IncDecFloatHelper(), clang::interp::interp__builtin_copysign(), clang::interp::interp__builtin_elementwise_triop_fp(), clang::interp::interp__builtin_fmax(), clang::interp::interp__builtin_fmin(), clang::interp::interp__builtin_ia32_cvtpd2ps(), clang::interp::interp__builtin_ia32_cvtsd2ss(), clang::interp::interp__builtin_inf(), clang::interp::interp__builtin_nan(), clang::interp::Mulc(), clang::interp::Mulf(), clang::interp::Neg(), clang::interp::ReadArg< Floating >(), and clang::interp::Subf().
|
inline |
Definition at line 120 of file InterpState.h.
References allocate().
Referenced by clang::interp::appendToMemberPointer(), clang::interp::castBackMemberPointer(), and clang::interp::CopyMemberPtrPath().
|
inline |
Definition at line 124 of file InterpState.h.
References allocate().
Referenced by clang::interp::addSubOffsetOpaque().
|
inline |
Return if we're checking if a global variable has a constant destructor.
Definition at line 179 of file InterpState.h.
References clang::interp::Dtor, and EvalKind.
Referenced by clang::interp::CheckConstant(), clang::interp::CheckConstant(), clang::interp::checkDestructor(), checkingConstantDestruction(), clang::interp::CheckMutable(), CheckTemporary(), and CheckTemporary().
Return if we're checking if a global variable has a constant destructor and the given pointer is pointing to the variable we're checking that for.
Definition at line 184 of file InterpState.h.
References checkingConstantDestruction().
Definition at line 187 of file InterpState.h.
References clang::interp::Dtor, EvalKind, and EvaluatingDecl.
| void InterpState::cleanup | ( | ) |
Definition at line 74 of file InterpState.cpp.
| void InterpState::deallocate | ( | Block * | B | ) |
Deallocates a pointer.
Definition at line 83 of file InterpState.cpp.
References clang::interp::Block::getSize(), clang::interp::Block::hasPointers(), clang::interp::Block::invokeDtor(), clang::interp::Block::isDead(), clang::interp::Block::isDynamic(), clang::interp::Block::isInitialized(), clang::interp::Block::isStatic(), and clang::interp::Block::rawData().
Referenced by clang::interp::Destroy().
|
inline |
Definition at line 57 of file InterpState.h.
References clang::Expr::EvalStatus::Diag, and clang::interp::State::getEvalStatus().
Referenced by clang::interp::convertDoubleToFloatStrict(), clang::interp::diagnoseNonConstexprBuiltin(), diagnoseNonConstVariable(), diagnoseUnknownDecl(), and clang::interp::PushIgnoreDiags().
|
inline |
Allocate a new pointer path of Length NewLength.
NewLength - 1 elements are copied form OldPP.
Definition at line 135 of file InterpState.h.
References allocate().
Referenced by clang::interp::arrayElemPtrOpaque(), clang::interp::getBase(), clang::interp::getField(), and clang::interp::virtBaseHelper().
|
inline |
Definition at line 77 of file InterpState.h.
Referenced by clang::interp::Alloc(), clang::interp::AllocCN(), clang::interp::AllocN(), clang::interp::Free(), clang::interp::interp__builtin_operator_delete(), and clang::interp::interp__builtin_operator_new().
|
inlineoverridevirtual |
|
inline |
Definition at line 73 of file InterpState.h.
References Ctx.
Referenced by clang::interp::CallVirt(), clang::interp::compileFunction(), clang::interp::diagnoseTypeIdField(), clang::interp::DoBitCast(), clang::interp::DoBitCastPtr(), clang::interp::DoMemcpy(), clang::interp::getBase(), clang::interp::getField(), clang::interp::GetMemberPtrDecl(), clang::interp::GetTypeidPtr(), clang::interp::interp__builtin_addressof(), clang::interp::interp__builtin_carryop(), clang::interp::interp__builtin_elementwise_abs(), clang::interp::interp__builtin_elementwise_countzeroes(), clang::interp::interp__builtin_elementwise_int_binop(), clang::interp::interp__builtin_elementwise_int_unaryop(), clang::interp::interp__builtin_elementwise_maxmin(), clang::interp::interp__builtin_elementwise_triop(), clang::interp::interp__builtin_expect(), clang::interp::interp__builtin_fpclassify(), clang::interp::interp__builtin_ia32_addcarry_subborrow(), clang::interp::interp__builtin_ia32_dbpsadbw(), clang::interp::interp__builtin_ia32_gfni_affine(), clang::interp::interp__builtin_ia32_gfni_mul(), clang::interp::interp__builtin_ia32_movmsk_op(), clang::interp::interp__builtin_ia32_mpsadbw(), clang::interp::interp__builtin_ia32_multishiftqb(), clang::interp::interp__builtin_ia32_pack(), clang::interp::interp__builtin_ia32_pclmulqdq(), clang::interp::interp__builtin_ia32_phminposuw(), clang::interp::interp__builtin_ia32_pmul(), clang::interp::interp__builtin_ia32_psadbw(), clang::interp::interp__builtin_ia32_pternlog(), clang::interp::interp__builtin_ia32_shift_with_count(), clang::interp::interp__builtin_ia32_shufbitqmb_mask(), clang::interp::interp__builtin_ia32_shuffle_generic(), clang::interp::interp__builtin_ia32_test_op(), clang::interp::interp__builtin_ia32_vcvtps2ph(), clang::interp::interp__builtin_ia32_vpconflict(), clang::interp::interp__builtin_ia32_vpdp(), clang::interp::interp__builtin_infer_alloc_token(), clang::interp::interp__builtin_memchr(), clang::interp::interp__builtin_memcmp(), clang::interp::interp__builtin_operator_delete(), clang::interp::interp__builtin_operator_new(), clang::interp::interp__builtin_overflowop(), clang::interp::interp__builtin_strcmp(), clang::interp::interp__builtin_vector_reduce(), clang::interp::interp_builtin_horizontal_int_binop(), clang::interp::interp_builtin_ia32_cvt_vector_to_int(), clang::interp::popToAPSInt(), clang::interp::popToAPSInt(), clang::interp::popToUInt64(), clang::interp::pushInteger(), and clang::interp::runRecordDestructor().
|
overridevirtual |
|
inline |
| StdAllocatorCaller InterpState::getStdAllocatorCaller | ( | StringRef | Name | ) | const |
Definition at line 130 of file InterpState.cpp.
References clang::cast(), Current, clang::Func, clang::IdentifierInfo::isStr(), clang::TemplateArgumentList::size(), and clang::TemplateArgument::Type.
Referenced by clang::interp::CheckBitCast(), clang::interp::interp__builtin_operator_delete(), clang::interp::interp__builtin_operator_new(), and clang::interp::PtrPtrCast().
| bool InterpState::inConstantContext | ( | ) | const |
Definition at line 46 of file InterpState.cpp.
References ConstantContextOverride, and clang::interp::State::InConstantContext.
Referenced by clang::interp::ArrayDecay(), clang::interp::arrayElemPtr(), clang::interp::BCP(), clang::interp::CheckEnumValue(), clang::interp::CheckFloatStatus(), clang::interp::CheckNewTypeMismatch(), clang::interp::CmpHelperEQ< Pointer >(), diagnoseUnknownDecl(), clang::interp::getField(), clang::interp::IncDecHelper(), clang::interp::interp__builtin_is_constant_evaluated(), clang::interp::interp__builtin_is_within_lifetime(), clang::interp::IsConstantContext(), and clang::interp::SizelessVectorElementSize().
Definition at line 159 of file InterpState.h.
References InitializingPtrs, and V.
Referenced by clang::interp::CheckVolatile(), and clang::interp::interp__builtin_is_within_lifetime().
Definition at line 166 of file InterpState.h.
References clang::interp::Descriptor::asVarDecl(), clang::interp::Dtor, EvalID, EvalKind, EvaluatingDecl, clang::interp::Block::getDescriptor(), clang::interp::Block::getEvalID(), and clang::interp::None.
Referenced by clang::interp::CheckMutable().
| bool InterpState::maybeDiagnoseDanglingAllocations | ( | ) |
Diagnose any dynamic allocations that haven't been freed yet.
Will return false if there were any allocations to diagnose, true otherwise.
Definition at line 111 of file InterpState.cpp.
References clang::interp::State::CCEDiag(), clang::interp::State::checkingPotentialConstantExpression(), and clang::interp::State::getLangOpts().
Referenced by clang::interp::CheckAllocations().
|
inline |
Definition at line 191 of file InterpState.h.
References StringID.
Referenced by clang::interp::GetStringPtr().
Note that a step has been executed.
If there are no more steps remaining, diagnoses and returns false.
Definition at line 148 of file InterpState.h.
References InfiniteSteps, and StepsLeft.
|
delete |
References InterpState().
|
inline |
Definition at line 75 of file InterpState.h.
References EvalLocation.
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 64 of file InterpState.h.
|
friend |
Definition at line 194 of file InterpState.h.
References EvaluationResult.
Referenced by EvaluationResult.
|
friend |
Definition at line 195 of file InterpState.h.
References InterpStateCCOverride.
Referenced by InterpStateCCOverride.
| InterpFrame clang::interp::InterpState::BottomFrame |
Bottom function frame.
Definition at line 216 of file InterpState.h.
Referenced by InterpState(), InterpState(), and ~InterpState().
| std::optional<bool> clang::interp::InterpState::ConstantContextOverride |
Definition at line 242 of file InterpState.h.
Referenced by inConstantContext(), clang::interp::PopCC(), and clang::interp::PushCC().
| Context& clang::interp::InterpState::Ctx |
Definition at line 214 of file InterpState.h.
Referenced by clang::interp::CallPtr(), clang::interp::CastMemberPtrPtr(), clang::interp::CheckNonNullArgs(), clang::interp::getBase(), getContext(), clang::interp::getField(), clang::interp::interp__builtin_assume_aligned(), clang::interp::interp__builtin_elementwise_triop_fp(), clang::interp::interp__builtin_ia32_addsub(), clang::interp::interp__builtin_is_aligned_up_down(), clang::interp::interp__builtin_operator_new(), clang::interp::interp_builtin_horizontal_fp_binop(), InterpState(), and InterpState().
| InterpFrame* clang::interp::InterpState::Current = nullptr |
The current frame.
Definition at line 218 of file InterpState.h.
Referenced by clang::interp::ActivateThisField(), clang::interp::AddSubMulHelper(), clang::interp::addSubOffsetOpaque(), clang::interp::AllocCN(), clang::interp::AllocN(), clang::interp::allowNullSubObj(), clang::interp::ArrayDecay(), clang::interp::Assume(), clang::interp::BitCastPrim(), clang::interp::Call(), clang::interp::CallPtr(), clang::interp::CallVar(), clang::interp::CallVirt(), clang::interp::CastFloatingIntegral(), clang::interp::CheckActive(), clang::interp::CheckArray(), clang::interp::CheckArrayDestSize(), clang::interp::CheckArraySize(), clang::interp::CheckArraySize(), clang::interp::CheckBitCast(), clang::interp::CheckBitCast(), CheckBitcastType(), clang::interp::CheckCallable(), clang::interp::CheckCallDepth(), clang::interp::CheckConst(), clang::interp::CheckConstant(), clang::interp::checkConstructor(), clang::interp::CheckDeleteSource(), clang::interp::checkDestructor(), clang::interp::CheckDivRem(), clang::interp::CheckDowncast(), clang::interp::CheckDummy(), clang::interp::CheckDummy(), clang::interp::CheckDynamicMemoryAllocation(), clang::interp::CheckFloatResult(), clang::interp::CheckFloatStatus(), clang::interp::CheckFunctionDecl(), CheckGlobal(), clang::interp::CheckGlobalLoad(), clang::interp::CheckLifetime(), clang::interp::CheckLiteralType(), clang::interp::CheckLive(), clang::interp::CheckLoad(), clang::interp::CheckLocalLoad(), clang::interp::CheckMutable(), clang::interp::CheckNewDeleteForms(), clang::interp::CheckNewTypeMismatch(), clang::interp::CheckNonNullArg(), clang::interp::CheckNonNullArgs(), clang::interp::CheckNull(), clang::interp::CheckNull(), clang::interp::CheckPointerToIntegralCast(), clang::interp::CheckPseudoDtor(), clang::interp::CheckRange(), clang::interp::CheckRange(), clang::interp::CheckSubobject(), CheckTemporary(), CheckTemporary(), clang::interp::CheckThis(), clang::interp::CheckVolatile(), clang::interp::CheckWeak(), clang::interp::cleanupAfterFunctionCall(), clang::interp::CMP3(), clang::interp::CmpHelper< Pointer >(), clang::interp::CmpHelperEQ< MemberPointer >(), clang::interp::CmpHelperEQ< Pointer >(), clang::interp::CtorCheck(), clang::interp::Destroy(), clang::interp::diagnoseCallableDecl(), clang::interp::diagnoseEnumValue(), diagnoseMissingInitializer(), clang::interp::diagnoseNonConstexprBuiltin(), diagnoseNonConstVariable(), clang::interp::diagnoseShiftFailure(), clang::interp::diagnoseTypeIdField(), clang::interp::diagnoseUninitialized(), diagnoseUnknownDecl(), clang::interp::DiagTypeid(), clang::interp::Divc(), clang::interp::DoBitCastPtr(), clang::interp::DoShift(), clang::interp::DoShiftAP(), clang::interp::DynamicCast(), clang::interp::EnableLocal(), clang::interp::FnPtrCast(), clang::interp::Free(), getCallStackDepth(), getCurrentFrame(), clang::interp::getDynamicDecl(), clang::interp::GetIntPtr(), clang::interp::GetLocal(), clang::interp::GetLocalEnabled(), clang::interp::GetParam(), clang::interp::GetPtrDerivedPop(), clang::interp::GetPtrLocal(), clang::interp::GetPtrParam(), clang::interp::GetPtrThisBase(), clang::interp::GetPtrThisField(), clang::interp::GetPtrThisVirtBase(), clang::interp::GetRefLocal(), getStdAllocatorCaller(), clang::interp::GetThisField(), clang::interp::GetTypeidPtr(), clang::interp::handleFixedPointOverflow(), clang::interp::handleOverflow(), clang::interp::handleReference(), clang::interp::IncDecHelper(), clang::interp::InitElem(), clang::interp::InitElemPop(), clang::interp::InitScope(), clang::interp::InitThisBitField(), clang::interp::InitThisBitFieldActivate(), clang::interp::InitThisField(), clang::interp::InitThisFieldActivate(), clang::interp::interp__builtin_elementwise_countzeroes(), clang::interp::interp__builtin_ia32_vcvtps2ph(), clang::interp::interp__builtin_is_constant_evaluated(), clang::interp::interp__builtin_is_within_lifetime(), clang::interp::interp__builtin_memchr(), clang::interp::interp__builtin_memcmp(), clang::interp::interp__builtin_memcpy(), clang::interp::interp__builtin_operator_delete(), clang::interp::interp__builtin_operator_new(), clang::interp::interp__builtin_strcmp(), clang::interp::Interpret(), clang::interp::InterpretBuiltin(), clang::interp::InterpretOffsetOf(), InterpState(), InterpState(), clang::interp::Invalid(), clang::interp::InvalidCast(), clang::interp::InvalidDeclRef(), clang::interp::InvalidNewDeleteExpr(), clang::interp::InvalidShuffleVectorIndex(), clang::interp::InvalidStore(), clang::interp::Neg(), clang::interp::NoRet(), clang::interp::OffsetHelper(), clang::interp::PopMSVCCE(), clang::interp::PtrPtrCast(), clang::interp::PushMSVCCE(), clang::interp::Ret(), clang::interp::RetVoid(), clang::interp::runRecordDestructor(), clang::interp::RVOPtr(), clang::interp::SetLocal(), clang::interp::SetParam(), clang::interp::ShiftFixedPoint(), clang::interp::SizelessVectorElementSize(), clang::interp::StartThisLifetime(), clang::interp::StartThisLifetime1(), clang::interp::SubPtr(), clang::interp::This(), clang::interp::Unsupported(), and ~InterpState().
| unsigned clang::interp::InterpState::DiagIgnoreDepth = 0 |
Definition at line 241 of file InterpState.h.
Referenced by clang::interp::PopIgnoreDiags(), and clang::interp::PushIgnoreDiags().
| const unsigned clang::interp::InterpState::EvalID |
ID identifying this evaluation.
Definition at line 229 of file InterpState.h.
Referenced by clang::interp::Alloc(), clang::interp::AllocCN(), clang::interp::AllocN(), CheckTemporary(), CheckTemporary(), InterpState(), InterpState(), and lifetimeStartedInEvaluation().
| EvaluationKind clang::interp::InterpState::EvalKind = EvaluationKind::None |
Definition at line 233 of file InterpState.h.
Referenced by checkingConstantDestruction(), checkingConstantDestruction(), and lifetimeStartedInEvaluation().
| SourceLocation clang::interp::InterpState::EvalLocation |
Source location of the evaluating expression.
Definition at line 220 of file InterpState.h.
Referenced by setEvalLocation().
Declaration we're initializing/evaluting, if any.
Definition at line 222 of file InterpState.h.
Referenced by clang::interp::CheckConstant(), clang::interp::CheckDecl(), clang::interp::CheckExtern(), checkingConstantDestruction(), clang::interp::CheckLiteralType(), clang::interp::diagnoseUninitialized(), clang::interp::GetRefGlobal(), clang::interp::interp__builtin_is_within_lifetime(), and lifetimeStartedInEvaluation().
Whether infinite evaluation steps have been requested.
If this is false, we use the StepsLeft value above.
Definition at line 227 of file InterpState.h.
Referenced by InterpState(), InterpState(), and noteStep().
| llvm::SmallVector<PtrView> clang::interp::InterpState::InitializingPtrs |
List of blocks we're currently running either constructors or destructors for.
Definition at line 250 of file InterpState.h.
Referenced by clang::interp::Call(), clang::interp::CheckConst(), clang::interp::DynamicCast(), clang::interp::EndInit(), clang::interp::getDynamicDecl(), initializingBlock(), and clang::interp::StartInit().
| Program& clang::interp::InterpState::P |
Reference to the module containing all bytecode.
Definition at line 210 of file InterpState.h.
Referenced by CheckGlobal(), clang::interp::compileFunction(), clang::interp::copyPrimitiveMemory(), clang::interp::copyPrimitiveMemory(), clang::interp::GetGlobal(), clang::interp::GetGlobalUnchecked(), clang::interp::GetIntPtr(), clang::interp::GetPtrGlobal(), clang::interp::GetRefGlobal(), clang::interp::InitGlobal(), clang::interp::InitGlobalTemp(), clang::interp::interp__builtin_operator_new(), InterpState(), InterpState(), and ~InterpState().
| CodePtr clang::interp::InterpState::PC |
Definition at line 208 of file InterpState.h.
Referenced by clang::interp::BCP(), clang::interp::Call(), clang::interp::CallVar(), getSource(), clang::interp::Interpret(), Jf(), Jmp(), Jt(), clang::interp::Ret(), and clang::interp::RetVoid().
| SmallVectorImpl<PartialDiagnosticAt>* clang::interp::InterpState::PrevDiags = nullptr |
Things needed to do speculative execution.
Definition at line 236 of file InterpState.h.
Referenced by clang::interp::PopIgnoreDiags(), and clang::interp::PushIgnoreDiags().
Definition at line 237 of file InterpState.h.
Referenced by clang::interp::PopIgnoreDiags(), and clang::interp::PushIgnoreDiags().
| llvm::SmallVector< std::pair<const Expr *, const LifetimeExtendedTemporaryDecl *> > clang::interp::InterpState::SeenGlobalTemporaries |
Definition at line 246 of file InterpState.h.
Referenced by clang::interp::InitGlobalTemp(), and clang::interp::InitGlobalTempComp().
| unsigned clang::interp::InterpState::SpeculationDepth = 0 |
Definition at line 239 of file InterpState.h.
Referenced by clang::interp::BCP(), clang::interp::EndSpeculation(), and clang::interp::StartSpeculation().
| unsigned clang::interp::InterpState::StepsLeft = 1 |
Steps left during evaluation.
Definition at line 224 of file InterpState.h.
Referenced by InterpState(), InterpState(), and noteStep().
| InterpStack& clang::interp::InterpState::Stk |
Temporary stack.
Definition at line 212 of file InterpState.h.
Referenced by clang::interp::Activate(), clang::interp::Add(), clang::interp::Addf(), clang::interp::AddOffset(), clang::interp::AddrOf(), clang::interp::AddSubMulHelper(), clang::interp::AddSubNonNumber(), clang::interp::Alloc(), clang::interp::AllocCN(), clang::interp::AllocN(), clang::interp::appendToMemberPointer(), clang::interp::ArrayDecay(), clang::interp::ArrayElem(), clang::interp::ArrayElemPop(), clang::interp::ArrayElemPtr(), clang::interp::arrayElemPtr(), clang::interp::arrayElemPtrOpaque(), clang::interp::ArrayElemPtrPop(), clang::interp::Assume(), clang::interp::BCP(), clang::interp::BitAnd(), clang::interp::BitCast(), clang::interp::BitCastPrim(), clang::interp::BitOr(), clang::interp::BitXor(), clang::interp::Call(), clang::interp::CallPtr(), clang::interp::CallVar(), clang::interp::CallVirt(), clang::interp::Cast(), clang::interp::CastAP(), clang::interp::CastAPS(), clang::interp::CastAPToOffsetIndex(), clang::interp::castBackMemberPointer(), clang::interp::CastFixedPoint(), clang::interp::CastFixedPointFloating(), clang::interp::CastFixedPointIntegral(), clang::interp::CastFloatingFixedPoint(), clang::interp::CastFloatingIntegral(), clang::interp::CastFloatingIntegralAP(), clang::interp::CastFloatingIntegralAPS(), clang::interp::CastFP(), clang::interp::CastIntegralFixedPoint(), clang::interp::CastIntegralFloating(), clang::interp::CastMemberPtrBasePop(), clang::interp::CastMemberPtrDerivedPop(), clang::interp::CastMemberPtrPtr(), clang::interp::CastPointerIntegral(), clang::interp::CastPointerIntegralAP(), clang::interp::CastPointerIntegralAPS(), clang::interp::CheckArrayDestSize(), clang::interp::CheckBitCast(), clang::interp::CheckDestruction(), clang::interp::CheckEnumValue(), clang::interp::CheckNewTypeMismatch(), clang::interp::CheckNewTypeMismatchArray(), clang::interp::CheckNonNullArg(), clang::interp::CheckNonNullArgs(), clang::interp::CheckNull(), clang::interp::CheckRefInit(), clang::interp::cleanupAfterFunctionCall(), clang::interp::CMP3(), clang::interp::CmpHelper(), clang::interp::CmpHelper< Pointer >(), clang::interp::CmpHelperEQ< MemberPointer >(), clang::interp::CmpHelperEQ< Pointer >(), clang::interp::Comp(), clang::interp::Const(), clang::interp::ConstFloat(), clang::interp::CopyArray(), clang::interp::CopyMemberPtrPath(), clang::interp::Dec(), clang::interp::DecayPtr(), clang::interp::DecBitfield(), clang::interp::Decf(), clang::interp::DecfPop(), clang::interp::DecPop(), clang::interp::DecPopBitfield(), clang::interp::DecPtr(), clang::interp::Div(), clang::interp::Divc(), clang::interp::Divf(), clang::interp::DoShift(), clang::interp::DoShiftAP(), clang::interp::Dump(), clang::interp::Dup(), clang::interp::DynamicCast(), clang::interp::EndLifetime(), clang::interp::ExpandPtr(), clang::interp::FinishInit(), clang::interp::FinishInitActivate(), clang::interp::FinishInitActivatePop(), clang::interp::FinishInitGlobal(), clang::interp::FinishInitPop(), clang::interp::Flip(), clang::interp::floatAPCast(), clang::interp::Free(), clang::interp::getBase(), clang::interp::GetField(), clang::interp::getField(), clang::interp::GetFieldPop(), clang::interp::GetFnPtr(), clang::interp::GetGlobal(), clang::interp::GetGlobalUnchecked(), clang::interp::GetIntPtr(), clang::interp::GetLocal(), clang::interp::GetLocalEnabled(), clang::interp::GetMemberPtr(), clang::interp::GetMemberPtrBase(), clang::interp::GetMemberPtrDecl(), clang::interp::GetOpaquePtr(), clang::interp::GetParam(), clang::interp::GetPtrBase(), clang::interp::GetPtrBasePop(), clang::interp::GetPtrDerivedPop(), clang::interp::GetPtrField(), clang::interp::GetPtrFieldPop(), clang::interp::GetPtrGlobal(), clang::interp::GetPtrLocal(), clang::interp::GetPtrParam(), clang::interp::GetPtrThisBase(), clang::interp::GetPtrThisField(), clang::interp::GetPtrVirtBase(), clang::interp::GetPtrVirtBasePop(), clang::interp::GetRefGlobal(), clang::interp::GetStringPtr(), clang::interp::GetThisField(), clang::interp::GetTypeid(), clang::interp::GetTypeidPtr(), clang::interp::handleReference(), clang::interp::Inc(), clang::interp::IncBitfield(), clang::interp::IncDecFloatHelper(), clang::interp::IncDecHelper(), clang::interp::IncDecPtrHelper(), clang::interp::Incf(), clang::interp::IncfPop(), clang::interp::IncPop(), clang::interp::IncPopBitfield(), clang::interp::IncPtr(), clang::interp::Init(), clang::interp::InitBitField(), clang::interp::InitBitFieldActivate(), clang::interp::InitElem(), clang::interp::InitElemPop(), clang::interp::InitField(), clang::interp::InitFieldActivate(), clang::interp::InitGlobal(), clang::interp::InitGlobalTemp(), clang::interp::InitGlobalTempComp(), clang::interp::InitPop(), clang::interp::InitThisBitField(), clang::interp::InitThisBitFieldActivate(), clang::interp::InitThisField(), clang::interp::InitThisFieldActivate(), clang::interp::interp__builtin_arithmetic_fence(), clang::interp::interp__builtin_assume_aligned(), clang::interp::interp__builtin_atomic_lock_free(), clang::interp::interp__builtin_c11_atomic_is_lock_free(), clang::interp::interp__builtin_carryop(), clang::interp::interp__builtin_clz(), clang::interp::interp__builtin_complex(), clang::interp::interp__builtin_copysign(), clang::interp::interp__builtin_ctz(), clang::interp::interp__builtin_elementwise_abs(), clang::interp::interp__builtin_elementwise_countzeroes(), clang::interp::interp__builtin_elementwise_fp_binop(), clang::interp::interp__builtin_elementwise_int_binop(), clang::interp::interp__builtin_elementwise_int_unaryop(), clang::interp::interp__builtin_elementwise_maxmin(), clang::interp::interp__builtin_elementwise_triop(), clang::interp::interp__builtin_elementwise_triop_fp(), clang::interp::interp__builtin_expect(), clang::interp::interp__builtin_fabs(), clang::interp::interp__builtin_fmax(), clang::interp::interp__builtin_fmin(), clang::interp::interp__builtin_fpclassify(), clang::interp::interp__builtin_ia32_addcarry_subborrow(), clang::interp::interp__builtin_ia32_addsub(), clang::interp::interp__builtin_ia32_bmac(), clang::interp::interp__builtin_ia32_cmp_mask(), clang::interp::interp__builtin_ia32_cvt_mask2vec(), clang::interp::interp__builtin_ia32_cvt_vec2mask(), clang::interp::interp__builtin_ia32_cvtpd2ps(), clang::interp::interp__builtin_ia32_cvtsd2ss(), clang::interp::interp__builtin_ia32_dbpsadbw(), clang::interp::interp__builtin_ia32_extract_vector(), clang::interp::interp__builtin_ia32_extract_vector_masked(), clang::interp::interp__builtin_ia32_gfni_affine(), clang::interp::interp__builtin_ia32_gfni_mul(), clang::interp::interp__builtin_ia32_insert_subvector(), clang::interp::interp__builtin_ia32_movmsk_op(), clang::interp::interp__builtin_ia32_mpsadbw(), clang::interp::interp__builtin_ia32_multishiftqb(), clang::interp::interp__builtin_ia32_pack(), clang::interp::interp__builtin_ia32_pclmulqdq(), clang::interp::interp__builtin_ia32_phminposuw(), clang::interp::interp__builtin_ia32_pmul(), clang::interp::interp__builtin_ia32_psadbw(), clang::interp::interp__builtin_ia32_pternlog(), clang::interp::interp__builtin_ia32_select(), clang::interp::interp__builtin_ia32_select_scalar(), clang::interp::interp__builtin_ia32_shift_with_count(), clang::interp::interp__builtin_ia32_shufbitqmb_mask(), clang::interp::interp__builtin_ia32_shuffle_generic(), clang::interp::interp__builtin_ia32_test_op(), clang::interp::interp__builtin_ia32_vcvtps2ph(), clang::interp::interp__builtin_ia32_vec_ext(), clang::interp::interp__builtin_ia32_vec_set(), clang::interp::interp__builtin_ia32_vpconflict(), clang::interp::interp__builtin_ia32_vpdp(), clang::interp::interp__builtin_inf(), clang::interp::interp__builtin_infer_alloc_token(), clang::interp::interp__builtin_is_aligned_up_down(), clang::interp::interp__builtin_is_constant_evaluated(), clang::interp::interp__builtin_is_within_lifetime(), clang::interp::interp__builtin_isfinite(), clang::interp::interp__builtin_isfpclass(), clang::interp::interp__builtin_isinf(), clang::interp::interp__builtin_isnan(), clang::interp::interp__builtin_isnormal(), clang::interp::interp__builtin_issignaling(), clang::interp::interp__builtin_issubnormal(), clang::interp::interp__builtin_iszero(), clang::interp::interp__builtin_memchr(), clang::interp::interp__builtin_memcmp(), clang::interp::interp__builtin_memcpy(), clang::interp::interp__builtin_nan(), clang::interp::interp__builtin_object_size(), clang::interp::interp__builtin_operator_delete(), clang::interp::interp__builtin_operator_new(), clang::interp::interp__builtin_overflowop(), clang::interp::interp__builtin_popcount(), clang::interp::interp__builtin_ptrauth_string_discriminator(), clang::interp::interp__builtin_scalar_fp_round_mask_binop(), clang::interp::interp__builtin_signbit(), clang::interp::interp__builtin_strcmp(), clang::interp::interp__builtin_strlen(), clang::interp::interp__builtin_vector_reduce(), clang::interp::interp_builtin_horizontal_fp_binop(), clang::interp::interp_builtin_horizontal_int_binop(), clang::interp::interp_builtin_ia32_cvt_scalar_to_int(), clang::interp::interp_builtin_ia32_cvt_vector_to_int(), clang::interp::interp_floating_comparison(), InterpState(), InterpState(), clang::interp::Inv(), clang::interp::IsBaseClass(), clang::interp::IsConstantContext(), clang::interp::IsNonNull(), Jf(), Jt(), clang::interp::Load(), clang::interp::LoadPop(), clang::interp::LoadPopL(), clang::interp::MarkDestroyed(), clang::interp::Memcpy(), clang::interp::Mul(), clang::interp::Mulc(), clang::interp::Mulf(), clang::interp::NarrowPtr(), clang::interp::Neg(), clang::interp::Null(), clang::interp::OffsetOf(), clang::interp::Pop(), clang::interp::popToAPSInt(), clang::interp::popToAPSInt(), clang::interp::PreDec(), clang::interp::PreDecBitfield(), clang::interp::PreInc(), clang::interp::PreIncBitfield(), clang::interp::PseudoDtor(), clang::interp::PtrPtrCast(), clang::interp::pushInteger(), clang::interp::Rem(), clang::interp::Ret(), clang::interp::RetVoid(), clang::interp::runRecordDestructor(), clang::interp::RVOPtr(), clang::interp::SetLocal(), clang::interp::SetParam(), clang::interp::ShiftFixedPoint(), clang::interp::Shl(), clang::interp::Shr(), clang::interp::StartInit(), clang::interp::Store(), clang::interp::StoreActivate(), clang::interp::StoreActivatePop(), clang::interp::StoreBitField(), clang::interp::StoreBitFieldActivate(), clang::interp::StoreBitFieldActivatePop(), clang::interp::StoreBitFieldPop(), clang::interp::StorePop(), clang::interp::Sub(), clang::interp::Subf(), clang::interp::SubOffset(), clang::interp::SubPtr(), clang::interp::This(), clang::interp::ToMemberPtr(), clang::interp::virtBaseHelper(), clang::interp::Zero(), clang::interp::ZeroIntAP(), and clang::interp::ZeroIntAPS().
| unsigned clang::interp::InterpState::StringID = 0 |
Definition at line 231 of file InterpState.h.
Referenced by newStringID().