|
clang 23.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 (const Function *F, CodePtr PC) const override |
| 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) |
| 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 |
| 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 | 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. | |
| 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 Member Functions inherited from clang::interp::SourceMapper | |
| virtual | ~SourceMapper () |
| const Expr * | getExpr (const Function *F, CodePtr PC) const |
| Returns the expression if an opcode belongs to one, null otherwise. | |
| SourceLocation | getLocation (const Function *F, CodePtr PC) const |
| Returns the location from which an opcode originates. | |
| SourceRange | getRange (const Function *F, CodePtr PC) const |
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. | |
| 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().
|
inline |
Definition at line 107 of file InterpState.h.
References allocate().
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().
|
inline |
Definition at line 103 of file InterpState.h.
References allocate(), and clang::Num.
Definition at line 98 of file InterpState.h.
Referenced by allocAP(), allocate(), allocFloat(), and allocMemberPointerPath().
|
inline |
Definition at line 116 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 126 of file InterpState.h.
References allocate().
Referenced by clang::interp::appendToMemberPointer(), clang::interp::castBackMemberPointer(), and clang::interp::CopyMemberPtrPath().
|
inline |
Return if we're checking if a global variable has a constant destructor.
Definition at line 155 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(), 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 160 of file InterpState.h.
References clang::interp::Descriptor::asVarDecl(), checkingConstantDestruction(), and clang::interp::Pointer::getDeclDesc().
Definition at line 163 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().
|
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 |
Definition at line 83 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 79 of file InterpState.h.
References Ctx.
Referenced by clang::interp::CallVirt(), clang::interp::compileFunction(), clang::interp::DoBitCast(), clang::interp::DoBitCastPtr(), clang::interp::DoMemcpy(), 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::popToAPSInt(), clang::interp::popToAPSInt(), clang::interp::popToUInt64(), clang::interp::pushInteger(), and clang::interp::runRecordDestructor().
|
overridevirtual |
|
inlineoverridevirtual |
Delegates source mapping to the mapper.
Implements clang::interp::SourceMapper.
Definition at line 71 of file InterpState.h.
References clang::interp::Function::getSource(), and PC.
| 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::BCP(), clang::interp::CheckEnumValue(), clang::interp::CheckFloatResult(), 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 135 of file InterpState.h.
References InitializingPtrs, and V.
Referenced by clang::interp::CallVirt(), clang::interp::CheckVolatile(), and clang::interp::interp__builtin_is_within_lifetime().
Definition at line 142 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().
Note that a step has been executed.
If there are no more steps remaining, diagnoses and returns false.
Definition at line 160 of file InterpState.cpp.
References Current, clang::interp::State::FFDiag(), InfiniteSteps, and StepsLeft.
|
delete |
References InterpState().
|
inline |
Definition at line 81 of file InterpState.h.
References EvalLocation.
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 64 of file InterpState.h.
|
friend |
Definition at line 168 of file InterpState.h.
References EvaluationResult.
Referenced by EvaluationResult.
|
friend |
Definition at line 169 of file InterpState.h.
References InterpStateCCOverride.
Referenced by InterpStateCCOverride.
| InterpFrame clang::interp::InterpState::BottomFrame |
Bottom function frame.
Definition at line 188 of file InterpState.h.
Referenced by InterpState(), InterpState(), and ~InterpState().
| std::optional<bool> clang::interp::InterpState::ConstantContextOverride |
Definition at line 212 of file InterpState.h.
Referenced by inConstantContext(), clang::interp::PopCC(), and clang::interp::PushCC().
| Context& clang::interp::InterpState::Ctx |
Definition at line 186 of file InterpState.h.
Referenced by clang::interp::CallPtr(), clang::interp::CastMemberPtrPtr(), clang::interp::CheckNonNullArgs(), clang::interp::copyRecord(), 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 190 of file InterpState.h.
Referenced by clang::interp::ActivateThisField(), clang::interp::AddSubMulHelper(), clang::interp::AllocCN(), clang::interp::AllocN(), 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::CheckDynamicMemoryAllocation(), clang::interp::CheckFloatResult(), 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(), 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::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::getField(), 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::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(), noteStep(), 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::SetThisField(), 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 211 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 201 of file InterpState.h.
Referenced by clang::interp::Alloc(), clang::interp::AllocCN(), clang::interp::AllocN(), CheckTemporary(), InterpState(), InterpState(), and lifetimeStartedInEvaluation().
| EvaluationKind clang::interp::InterpState::EvalKind = EvaluationKind::None |
Definition at line 203 of file InterpState.h.
Referenced by checkingConstantDestruction(), checkingConstantDestruction(), and lifetimeStartedInEvaluation().
| SourceLocation clang::interp::InterpState::EvalLocation |
Source location of the evaluating expression.
Definition at line 192 of file InterpState.h.
Referenced by setEvalLocation().
Declaration we're initializing/evaluting, if any.
Definition at line 194 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 199 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 220 of file InterpState.h.
Referenced by clang::interp::Call(), clang::interp::CheckConst(), clang::interp::DynamicCast(), clang::interp::EndInit(), initializingBlock(), and clang::interp::StartInit().
| Program& clang::interp::InterpState::P |
Reference to the module containing all bytecode.
Definition at line 182 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(), clang::interp::ReadArg(), and ~InterpState().
| CodePtr clang::interp::InterpState::PC |
Definition at line 180 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 206 of file InterpState.h.
Referenced by clang::interp::PopIgnoreDiags(), and clang::interp::PushIgnoreDiags().
Definition at line 207 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 216 of file InterpState.h.
Referenced by clang::interp::InitGlobalTemp(), and clang::interp::InitGlobalTempComp().
| unsigned clang::interp::InterpState::SpeculationDepth = 0 |
Definition at line 209 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 196 of file InterpState.h.
Referenced by InterpState(), InterpState(), and noteStep().
| InterpStack& clang::interp::InterpState::Stk |
Temporary stack.
Definition at line 184 of file InterpState.h.
Referenced by clang::interp::Activate(), clang::interp::Add(), clang::interp::Addf(), clang::interp::AddOffset(), 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::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::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::CastNoOverflow(), 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::EndLifetimePop(), 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::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::GetPtrVirtBasePop(), clang::interp::GetRefGlobal(), 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_floating_comparison(), InterpState(), InterpState(), clang::interp::Inv(), clang::interp::IsConstantContext(), clang::interp::IsNonNull(), Jf(), Jt(), clang::interp::Load(), clang::interp::LoadPop(), 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::PtrPtrCast(), clang::interp::pushInteger(), clang::interp::Rem(), clang::interp::Ret(), clang::interp::RetVoid(), clang::interp::runRecordDestructor(), clang::interp::RVOPtr(), clang::interp::SetField(), clang::interp::SetLocal(), clang::interp::SetParam(), clang::interp::SetThisField(), 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().