clang 24.0.0git
clang::interp::InterpState Class Referencefinal

Interpreter context. More...

#include "/work/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/AST/ByteCode/InterpState.h"

Inheritance diagram for clang::interp::InterpState:
[legend]

Public Member Functions

 InterpState (const EvalSettings &Settings, Program &P, InterpStack &Stk, FrameAllocator &FrameAlloc, Context &Ctx, SourceMapper *M=nullptr)
 InterpState (const EvalSettings &Settings, Program &P, InterpStack &Stk, FrameAllocator &FA, Context &Ctx, const Function *Func)
 InterpState (Expr::EvalStatus &Status, Program &P, InterpStack &Stk, FrameAllocator &FA, Context &Ctx, SourceMapper *M)
 ~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 ()
template<typename... Ts>
InterpFrame * allocFrame (const Function *F, Ts &&...Args)
 Allocate memory and create a new InterpFrame for the given function.
void resetCurrentFrame ()
 Free resources associated with the current frame and set the caller to be the new current frame.
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)
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

Detailed Description

Interpreter context.

Definition at line 47 of file InterpState.h.

Constructor & Destructor Documentation

◆ InterpState() [1/4]

◆ InterpState() [2/4]

◆ InterpState() [3/4]

◆ ~InterpState()

InterpState::~InterpState ( )

Definition at line 70 of file InterpState.cpp.

References Current, Next, and P.

◆ InterpState() [4/4]

clang::interp::InterpState::InterpState ( const InterpState & )
delete

References InterpState().

Member Function Documentation

◆ allocAP()

◆ allocate() [1/2]

template<typename T>
T * clang::interp::InterpState::allocate ( size_t Num = 1) const
inline

Definition at line 108 of file InterpState.h.

References allocate(), clang::Num, and clang::T.

◆ allocate() [2/2]

void * clang::interp::InterpState::allocate ( size_t Size,
unsigned Align = 8 ) const
inline

◆ allocFloat()

◆ allocFrame()

template<typename... Ts>
InterpFrame * clang::interp::InterpState::allocFrame ( const Function * F,
Ts &&... Args )
inline

Allocate memory and create a new InterpFrame for the given function.

Definition at line 206 of file InterpState.h.

References clang::interp::InterpFrame::allocSize().

Referenced by clang::interp::Call(), and clang::interp::CallVar().

◆ allocMemberPointerPath()

const CXXRecordDecl ** clang::interp::InterpState::allocMemberPointerPath ( unsigned Length)
inline

◆ allocPointerPath()

PointerPathEntry * clang::interp::InterpState::allocPointerPath ( unsigned Length,
const PointerPathEntry * OldPP )
inline

Definition at line 135 of file InterpState.h.

References allocate().

Referenced by clang::interp::addSubOffsetOpaque().

◆ checkingConstantDestruction() [1/3]

bool clang::interp::InterpState::checkingConstantDestruction ( ) const
inline

◆ checkingConstantDestruction() [2/3]

bool clang::interp::InterpState::checkingConstantDestruction ( const Pointer & Ptr) const
inline

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 195 of file InterpState.h.

References checkingConstantDestruction().

◆ checkingConstantDestruction() [3/3]

bool clang::interp::InterpState::checkingConstantDestruction ( const VarDecl * VD) const
inline

Definition at line 198 of file InterpState.h.

References clang::interp::Dtor, EvalKind, and EvaluatingDecl.

◆ cleanup()

void InterpState::cleanup ( )

Definition at line 86 of file InterpState.cpp.

◆ deallocate()

◆ diagnosing()

◆ extendPointerPath()

PointerPathEntry * clang::interp::InterpState::extendPointerPath ( unsigned NewLength,
const PointerPathEntry * OldPP,
PointerPathEntry NewEntry )
inline

Allocate a new pointer path of Length NewLength.

NewLength - 1 elements are copied form OldPP.

Definition at line 146 of file InterpState.h.

References allocate().

Referenced by clang::interp::arrayElemPtrOpaque(), clang::interp::getBase(), clang::interp::getField(), and clang::interp::virtBaseHelper().

◆ getAllocator()

◆ getCallStackDepth()

unsigned clang::interp::InterpState::getCallStackDepth ( )
inlineoverridevirtual

Implements clang::interp::State.

Definition at line 70 of file InterpState.h.

References Current.

◆ getContext()

Context & clang::interp::InterpState::getContext ( ) const
inline

Definition at line 82 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_stdc_memreverse8(), 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().

◆ getCurrentFrame()

const Frame * InterpState::getCurrentFrame ( )
overridevirtual

Implements clang::interp::State.

Definition at line 93 of file InterpState.cpp.

References Current.

◆ getSource()

SourceInfo clang::interp::InterpState::getSource ( CodePtr PC) const
inline

Delegates source mapping to the mapper.

Definition at line 80 of file InterpState.h.

References PC.

◆ getStdAllocatorCaller()

◆ inConstantContext()

◆ initializingBlock()

bool clang::interp::InterpState::initializingBlock ( const Block * B) const
inline

◆ lifetimeStartedInEvaluation()

bool clang::interp::InterpState::lifetimeStartedInEvaluation ( const Block * B) const
inline

◆ maybeDiagnoseDanglingAllocations()

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 123 of file InterpState.cpp.

References clang::interp::State::CCEDiag(), clang::interp::State::checkingPotentialConstantExpression(), and clang::interp::State::getLangOpts().

Referenced by clang::interp::CheckAllocations().

◆ newStringID()

unsigned clang::interp::InterpState::newStringID ( )
inline

Definition at line 202 of file InterpState.h.

References StringID.

Referenced by clang::interp::GetStringPtr().

◆ noteStep()

bool clang::interp::InterpState::noteStep ( CodePtr OpPC)
inline

Note that a step has been executed.

If there are no more steps remaining, diagnoses and returns false.

Definition at line 159 of file InterpState.h.

References InfiniteSteps, and StepsLeft.

Referenced by Jf(), Jmp(), and Jt().

◆ operator=()

InterpState & clang::interp::InterpState::operator= ( const InterpState & )
delete

References InterpState().

◆ resetCurrentFrame()

void clang::interp::InterpState::resetCurrentFrame ( )
inline

Free resources associated with the current frame and set the caller to be the new current frame.

Definition at line 217 of file InterpState.h.

References clang::interp::InterpFrame::allocSize(), and Current.

Referenced by clang::interp::Call(), and clang::interp::CallVar().

◆ setEvalLocation()

void clang::interp::InterpState::setEvalLocation ( SourceLocation SL)
inline

Definition at line 84 of file InterpState.h.

References EvalLocation.

◆ stepsLeft()

bool clang::interp::InterpState::stepsLeft ( ) const
inlineoverridevirtual

Implements clang::interp::State.

Definition at line 73 of file InterpState.h.

◆ EvaluationResult

friend class EvaluationResult
friend

Definition at line 227 of file InterpState.h.

References EvaluationResult.

Referenced by EvaluationResult.

◆ InterpStateCCOverride

friend class InterpStateCCOverride
friend

Definition at line 228 of file InterpState.h.

References InterpStateCCOverride.

Referenced by InterpStateCCOverride.

Member Data Documentation

◆ BottomFrame

InterpFrame clang::interp::InterpState::BottomFrame

Bottom function frame.

Definition at line 251 of file InterpState.h.

Referenced by InterpState(), InterpState(), and InterpState().

◆ ConstantContextOverride

std::optional<bool> clang::interp::InterpState::ConstantContextOverride

Definition at line 277 of file InterpState.h.

Referenced by inConstantContext(), clang::interp::PopCC(), and clang::interp::PushCC().

◆ Ctx

◆ Current

InterpFrame* clang::interp::InterpState::Current = nullptr

The current frame.

Definition at line 253 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::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::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::CheckPlacementNew(), clang::interp::CheckPointerToIntegralCast(), clang::interp::CheckPseudoDtor(), clang::interp::CheckRange(), 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::DefaultInit(), clang::interp::Destroy(), clang::interp::diagnoseArrayIndex(), clang::interp::diagnoseCallableDecl(), clang::interp::diagnoseDummy(), 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_stdc_memreverse8(), clang::interp::interp__builtin_strcmp(), clang::interp::Interpret(), clang::interp::InterpretBuiltin(), clang::interp::InterpretOffsetOf(), InterpState(), 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::PopMSVCCE(), clang::interp::PtrPtrCast(), clang::interp::PushMSVCCE(), resetCurrentFrame(), 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::TrivialCopy(), clang::interp::Unsupported(), and ~InterpState().

◆ DiagIgnoreDepth

unsigned clang::interp::InterpState::DiagIgnoreDepth = 0

Definition at line 276 of file InterpState.h.

Referenced by clang::interp::PopIgnoreDiags(), and clang::interp::PushIgnoreDiags().

◆ EvalID

const unsigned clang::interp::InterpState::EvalID

◆ EvalKind

EvaluationKind clang::interp::InterpState::EvalKind = EvaluationKind::None

◆ EvalLocation

SourceLocation clang::interp::InterpState::EvalLocation

Source location of the evaluating expression.

Definition at line 255 of file InterpState.h.

Referenced by setEvalLocation().

◆ EvaluatingDecl

◆ InfiniteSteps

const bool clang::interp::InterpState::InfiniteSteps = false

Whether infinite evaluation steps have been requested.

If this is false, we use the StepsLeft value above.

Definition at line 262 of file InterpState.h.

Referenced by InterpState(), InterpState(), InterpState(), and noteStep().

◆ InitializingPtrs

llvm::SmallVector<PtrView> clang::interp::InterpState::InitializingPtrs

◆ P

◆ PC

◆ PrevDiags

SmallVectorImpl<PartialDiagnosticAt>* clang::interp::InterpState::PrevDiags = nullptr

Things needed to do speculative execution.

Definition at line 271 of file InterpState.h.

Referenced by clang::interp::PopIgnoreDiags(), and clang::interp::PushIgnoreDiags().

◆ PrevDiagsEmitted

bool clang::interp::InterpState::PrevDiagsEmitted = false

Definition at line 272 of file InterpState.h.

Referenced by clang::interp::PopIgnoreDiags(), and clang::interp::PushIgnoreDiags().

◆ SeenGlobalTemporaries

llvm::SmallVector< std::pair<const Expr *, const LifetimeExtendedTemporaryDecl *> > clang::interp::InterpState::SeenGlobalTemporaries

◆ SpeculationDepth

unsigned clang::interp::InterpState::SpeculationDepth = 0

◆ StepsLeft

unsigned clang::interp::InterpState::StepsLeft = 1

Steps left during evaluation.

Definition at line 259 of file InterpState.h.

Referenced by InterpState(), InterpState(), InterpState(), and noteStep().

◆ Stk

InterpStack& clang::interp::InterpState::Stk

Temporary stack.

Definition at line 247 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::CastAddressSpace(), 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::DefaultInit(), 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_stdc_memreverse8(), 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(), 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::ReflectValue(), 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::StartFieldInit(), 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::TrivialCopy(), clang::interp::virtBaseHelper(), clang::interp::Zero(), clang::interp::ZeroIntAP(), and clang::interp::ZeroIntAPS().

◆ StringID

unsigned clang::interp::InterpState::StringID = 0

Definition at line 266 of file InterpState.h.

Referenced by newStringID().


The documentation for this class was generated from the following files: