clang 22.0.0git
|
Interpreter context. More...
#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/AST/ByteCode/InterpState.h"
Public Member Functions | |
InterpState (State &Parent, Program &P, InterpStack &Stk, Context &Ctx, SourceMapper *M=nullptr) | |
InterpState (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 |
Frame * | getCurrentFrame () override |
unsigned | getCallStackDepth () override |
const Frame * | getBottomFrame () const override |
Expr::EvalStatus & | getEvalStatus () const override |
ASTContext & | getASTContext () const override |
const LangOptions & | getLangOpts () const |
bool | keepEvaluatingAfterFailure () const override |
bool | keepEvaluatingAfterSideEffect () const override |
bool | noteUndefinedBehavior () override |
bool | inConstantContext () const |
bool | hasActiveDiagnostic () override |
void | setActiveDiagnostic (bool Flag) override |
void | setFoldFailureDiagnostic (bool Flag) override |
bool | hasPriorDiagnostic () override |
bool | noteSideEffect () override |
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) |
Public Member Functions inherited from clang::interp::State | |
virtual | ~State () |
bool | checkingPotentialConstantExpression () const |
Are we checking whether the expression is a potential constant expression? | |
bool | checkingForUndefinedBehavior () const |
Are we checking an expression for overflow? | |
State ()=default | |
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 (const 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 (const 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 | |
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. | |
SmallVectorImpl< PartialDiagnosticAt > * | PrevDiags = nullptr |
Things needed to do speculative execution. | |
unsigned | SpeculationDepth = 0 |
std::optional< bool > | ConstantContextOverride |
llvm::SmallVector< std::pair< const Expr *, const LifetimeExtendedTemporaryDecl * > > | SeenGlobalTemporaries |
llvm::SmallVector< const Block * > | InitializingBlocks |
List of blocks we're currently running either constructors or destructors for. | |
std::optional< llvm::BumpPtrAllocator > | Allocator |
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 |
Friends | |
class | EvaluationResult |
class | InterpStateCCOverride |
Interpreter context.
Definition at line 43 of file InterpState.h.
InterpState::InterpState | ( | 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, clang::interp::State::EvalMode, clang::interp::State::InConstantContext, P, clang::interp::State::State(), and Stk.
Referenced by InterpState(), and operator=().
InterpState::InterpState | ( | State & | Parent, |
Program & | P, | ||
InterpStack & | Stk, | ||
Context & | Ctx, | ||
const Function * | Func ) |
Definition at line 31 of file InterpState.cpp.
References BottomFrame, clang::interp::State::CheckingForUndefinedBehavior, clang::interp::State::CheckingPotentialConstantExpression, Ctx, Current, clang::interp::State::EvalMode, clang::Func, clang::interp::State::InConstantContext, clang::nullptr, P, clang::interp::State::State(), and Stk.
InterpState::~InterpState | ( | ) |
Definition at line 50 of file InterpState.cpp.
References BottomFrame, Current, Next, and P.
|
delete |
References InterpState().
Definition at line 136 of file InterpState.h.
References allocate(), and clang::T.
Referenced by clang::interp::AddSubMulHelper(), clang::interp::assignInteger(), clang::interp::BitAnd(), clang::interp::BitCastPrim(), clang::interp::BitOr(), clang::interp::BitXor(), clang::interp::CastAP(), clang::interp::CastAPS(), clang::interp::CastFloatingIntegralAP(), clang::interp::CastFloatingIntegralAPS(), clang::interp::CastPointerIntegralAP(), clang::interp::CastPointerIntegralAPS(), clang::interp::Comp(), clang::interp::Const(), clang::interp::Div(), clang::interp::DoBitCastPtr(), clang::interp::IncDecHelper(), clang::interp::InitBitField(), clang::interp::InitBitFieldActivate(), 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 132 of file InterpState.h.
References allocate(), clang::Num, and clang::T.
Definition at line 127 of file InterpState.h.
References Allocator.
Referenced by allocAP(), allocate(), and allocFloat().
|
inline |
Definition at line 145 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_inf(), clang::interp::interp__builtin_nan(), clang::interp::Mulc(), clang::interp::Mulf(), clang::interp::Neg(), clang::interp::ReadArg< Floating >(), and clang::interp::Subf().
void InterpState::cleanup | ( | ) |
Definition at line 71 of file InterpState.cpp.
void InterpState::deallocate | ( | Block * | B | ) |
Deallocates a pointer.
Definition at line 80 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 getEvalStatus().
Referenced by clang::interp::diagnoseNonConstexprBuiltin(), diagnoseNonConstVariable(), and diagnoseUnknownDecl().
|
inline |
Definition at line 112 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 |
Implements clang::interp::State.
Definition at line 70 of file InterpState.h.
References Ctx.
Referenced by clang::interp::AllocN(), clang::interp::BitCastPrim(), clang::interp::CallPtr(), clang::interp::CheckArraySize(), CheckBitcastType(), clang::interp::CheckConstant(), clang::interp::CheckDecl(), clang::interp::CheckDeleteSource(), clang::interp::CheckNewDeleteForms(), clang::interp::CheckNewTypeMismatch(), clang::interp::CheckPointerToIntegralCast(), CheckTemporary(), clang::interp::CMP3(), clang::interp::CmpHelper< Pointer >(), clang::interp::CmpHelperEQ< Pointer >(), clang::interp::Destroy(), clang::interp::diagnoseNonConstexprBuiltin(), clang::interp::DiagnoseUninitialized(), clang::interp::DoBitCast(), clang::interp::DoBitCastPtr(), clang::interp::DoBitCastPtr(), clang::interp::Free(), clang::interp::getField(), clang::interp::GetPtrBase(), clang::interp::GetPtrBasePop(), clang::interp::handleFixedPointOverflow(), 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_eh_return_data_regno(), clang::interp::interp__builtin_elementwise_countzeroes(), clang::interp::interp__builtin_inf(), clang::interp::interp__builtin_is_aligned_up_down(), 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_os_log_format_buffer_size(), clang::interp::interp__builtin_overflowop(), clang::interp::interp__builtin_strcmp(), clang::interp::interp__builtin_strlen(), clang::interp::InterpretBuiltin(), clang::interp::InterpretOffsetOf(), clang::interp::PtrPtrCast(), clang::interp::pushInteger(), and clang::interp::SubPtr().
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 64 of file InterpState.h.
References BottomFrame.
|
inlineoverridevirtual |
|
inline |
Definition at line 108 of file InterpState.h.
References Ctx.
Referenced by clang::interp::CallVirt(), clang::interp::CheckArrayInitialized(), clang::interp::compileFunction(), clang::interp::DoBitCast(), clang::interp::DoBitCastPtr(), clang::interp::DoMemcpy(), clang::interp::GetMemberPtrDecl(), clang::interp::GetTypeidPtr(), clang::interp::interp__builtin_abs(), clang::interp::interp__builtin_addressof(), clang::interp::interp__builtin_assume(), clang::interp::interp__builtin_atomic_lock_free(), clang::interp::interp__builtin_bitreverse(), clang::interp::interp__builtin_bswap(), clang::interp::interp__builtin_c11_atomic_is_lock_free(), clang::interp::interp__builtin_carryop(), clang::interp::interp__builtin_clrsb(), clang::interp::interp__builtin_clz(), clang::interp::interp__builtin_ctz(), clang::interp::interp__builtin_eh_return_data_regno(), clang::interp::interp__builtin_elementwise_abs(), clang::interp::interp__builtin_elementwise_countzeroes(), clang::interp::interp__builtin_elementwise_int_binop(), clang::interp::interp__builtin_elementwise_maxmin(), clang::interp::interp__builtin_elementwise_popcount(), clang::interp::interp__builtin_elementwise_triop(), clang::interp::interp__builtin_expect(), clang::interp::interp__builtin_ffs(), clang::interp::interp__builtin_fpclassify(), clang::interp::interp__builtin_ia32_addcarry_subborrow(), clang::interp::interp__builtin_ia32_pmul(), clang::interp::interp__builtin_isfpclass(), clang::interp::interp__builtin_memchr(), clang::interp::interp__builtin_memcmp(), clang::interp::interp__builtin_operator_new(), clang::interp::interp__builtin_overflowop(), clang::interp::interp__builtin_parity(), clang::interp::interp__builtin_popcount(), clang::interp::interp__builtin_rotate(), clang::interp::interp__builtin_strcmp(), clang::interp::interp__builtin_vector_reduce(), clang::interp::popArg(), clang::interp::popToAPSInt(), clang::interp::popToAPSInt(), clang::interp::pushInteger(), clang::interp::runRecordDestructor(), and clang::interp::SetThreeWayComparisonField().
|
overridevirtual |
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 67 of file InterpState.h.
Referenced by diagnosing(), clang::interp::EndSpeculation(), clang::interp::interp__builtin_is_constant_evaluated(), and clang::interp::StartSpeculation().
|
inline |
Definition at line 71 of file InterpState.h.
References Ctx.
Referenced by clang::interp::CallVirt(), clang::interp::CastPointerIntegral(), clang::interp::CheckArraySize(), clang::interp::CheckBitCast(), clang::interp::CheckCallable(), clang::interp::CheckCallDepth(), clang::interp::CheckConstant(), clang::interp::CheckDummy(), clang::interp::CheckDynamicMemoryAllocation(), clang::interp::CheckExtern(), clang::interp::CheckGlobalLoad(), clang::interp::CheckLiteralType(), clang::interp::CheckLocalLoad(), clang::interp::CheckMutable(), clang::interp::CheckPointerToIntegralCast(), clang::interp::CheckPseudoDtor(), clang::interp::CheckRange(), clang::interp::CheckShift(), clang::interp::CheckThis(), clang::interp::CheckVolatile(), clang::interp::diagnoseNonConstexprBuiltin(), diagnoseNonConstVariable(), clang::interp::DiagnoseUninitialized(), diagnoseUnknownDecl(), clang::interp::DoBitCastPtr(), clang::interp::DoShift(), clang::interp::DoShiftAP(), clang::interp::FnPtrCast(), clang::interp::getField(), clang::interp::GetIntPtr(), clang::interp::IncDecHelper(), clang::interp::InitElem(), clang::interp::InitElemPop(), clang::interp::interp__builtin_classify_type(), clang::interp::interp__builtin_operator_new(), clang::interp::InvalidCast(), clang::interp::InvalidNewDeleteExpr(), maybeDiagnoseDanglingAllocations(), clang::interp::OffsetHelper(), clang::interp::PtrPtrCast(), and clang::interp::SubPtr().
|
inlineoverridevirtual |
Delegates source mapping to the mapper.
Implements clang::interp::SourceMapper.
Definition at line 100 of file InterpState.h.
References clang::interp::Function::getSource().
StdAllocatorCaller InterpState::getStdAllocatorCaller | ( | StringRef | Name | ) | const |
Definition at line 127 of file InterpState.cpp.
References clang::cast(), Current, clang::Func, clang::IdentifierInfo::isStr(), clang::TemplateArgumentList::size(), and clang::TemplateArgument::Type.
Referenced by clang::interp::interp__builtin_operator_delete(), clang::interp::interp__builtin_operator_new(), and clang::interp::PtrPtrCast().
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 86 of file InterpState.h.
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 93 of file InterpState.h.
bool InterpState::inConstantContext | ( | ) | const |
Definition at line 43 of file InterpState.cpp.
References ConstantContextOverride, and clang::interp::State::InConstantContext.
Referenced by BCP(), clang::interp::CheckEnumValue(), clang::interp::CheckFloatResult(), clang::interp::CheckMutable(), clang::interp::CheckNewTypeMismatch(), clang::interp::CheckStore(), 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().
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 76 of file InterpState.h.
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 79 of file InterpState.h.
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 108 of file InterpState.cpp.
References clang::interp::State::CCEDiag(), clang::interp::State::checkingPotentialConstantExpression(), and getLangOpts().
Referenced by clang::interp::CheckAllocations().
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 94 of file InterpState.h.
Referenced by clang::interp::SideEffect().
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 82 of file InterpState.h.
Referenced by clang::interp::CastFloatingIntegral(), clang::interp::CheckFloatResult(), clang::interp::CheckNull(), clang::interp::CheckShift(), clang::interp::DoShift(), clang::interp::DoShiftAP(), clang::interp::handleFixedPointOverflow(), and clang::interp::handleOverflow().
|
delete |
References InterpState().
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 87 of file InterpState.h.
|
inline |
Definition at line 110 of file InterpState.h.
References EvalLocation.
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 90 of file InterpState.h.
|
friend |
Definition at line 157 of file InterpState.h.
References EvaluationResult.
Referenced by EvaluationResult.
|
friend |
Definition at line 158 of file InterpState.h.
References InterpStateCCOverride, and clang::interp::State::State().
Referenced by InterpStateCCOverride.
|
mutable |
Definition at line 196 of file InterpState.h.
Referenced by allocate().
InterpFrame clang::interp::InterpState::BottomFrame |
Bottom function frame.
Definition at line 176 of file InterpState.h.
Referenced by getBottomFrame(), InterpState(), InterpState(), and ~InterpState().
std::optional<bool> clang::interp::InterpState::ConstantContextOverride |
Definition at line 186 of file InterpState.h.
Referenced by inConstantContext(), clang::interp::PopCC(), and clang::interp::PushCC().
Context& clang::interp::InterpState::Ctx |
Definition at line 174 of file InterpState.h.
Referenced by clang::interp::Alloc(), clang::interp::AllocCN(), clang::interp::AllocN(), clang::interp::CallPtr(), clang::interp::CastMemberPtrPtr(), clang::interp::CheckMutable(), clang::interp::CheckNonNullArgs(), CheckTemporary(), clang::interp::copyRecord(), getASTContext(), getContext(), getLangOpts(), clang::interp::interp__builtin_assume_aligned(), clang::interp::interp__builtin_elementwise_triop_fp(), clang::interp::interp__builtin_ia32_bextr(), clang::interp::interp__builtin_is_aligned_up_down(), clang::interp::interp__builtin_operator_new(), InterpState(), and InterpState().
InterpFrame* clang::interp::InterpState::Current = nullptr |
The current frame.
Definition at line 178 of file InterpState.h.
Referenced by clang::interp::ActivateThisField(), clang::interp::AddSubMulHelper(), clang::interp::AllocN(), clang::interp::ArrayDecay(), clang::interp::Assume(), BCP(), clang::interp::BitCastPrim(), clang::interp::Call(), clang::interp::CallPtr(), clang::interp::CallVar(), clang::interp::CallVirt(), clang::interp::CastFloatingIntegral(), clang::interp::CastPointerIntegral(), clang::interp::CheckActive(), clang::interp::CheckArray(), clang::interp::CheckArraySize(), clang::interp::CheckArraySize(), 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(), 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::CheckShift(), 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::Destroy(), clang::interp::diagnoseEnumValue(), diagnoseMissingInitializer(), clang::interp::diagnoseNonConstexprBuiltin(), diagnoseNonConstVariable(), clang::interp::DiagnoseUninitialized(), diagnoseUnknownDecl(), clang::interp::DiagTypeid(), clang::interp::Divc(), clang::interp::DoBitCastPtr(), clang::interp::DoShift(), clang::interp::DoShiftAP(), clang::interp::FnPtrCast(), clang::interp::Free(), getCallStackDepth(), getCurrentFrame(), clang::interp::getField(), clang::interp::GetIntPtr(), clang::interp::GetLocal(), clang::interp::GetParam(), clang::interp::GetPtrDerivedPop(), clang::interp::GetPtrLocal(), clang::interp::GetPtrParam(), clang::interp::GetPtrThisBase(), clang::interp::GetPtrThisField(), clang::interp::GetPtrThisVirtBase(), getStdAllocatorCaller(), clang::interp::GetThisField(), clang::interp::GetTypeidPtr(), clang::interp::handleFixedPointOverflow(), clang::interp::handleOverflow(), 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_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(), InterpState(), InterpState(), clang::interp::Invalid(), clang::interp::InvalidCast(), clang::interp::InvalidDeclRef(), clang::interp::InvalidNewDeleteExpr(), clang::interp::InvalidShuffleVectorIndex(), clang::interp::Neg(), clang::interp::NoRet(), clang::interp::OffsetHelper(), clang::interp::PtrPtrCast(), 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::SubPtr(), clang::interp::This(), clang::interp::Unsupported(), and ~InterpState().
SourceLocation clang::interp::InterpState::EvalLocation |
Source location of the evaluating expression.
Definition at line 180 of file InterpState.h.
Referenced by setEvalLocation().
Declaration we're initializing/evaluting, if any.
Definition at line 182 of file InterpState.h.
Referenced by clang::interp::CheckConstant(), clang::interp::CheckDecl(), clang::interp::CheckExtern(), clang::interp::CheckLiteralType(), clang::interp::diagnoseEnumValue(), clang::interp::DiagnoseUninitialized(), and clang::interp::interp__builtin_is_within_lifetime().
llvm::SmallVector<const Block *> clang::interp::InterpState::InitializingBlocks |
List of blocks we're currently running either constructors or destructors for.
Definition at line 194 of file InterpState.h.
Referenced by clang::interp::Call(), clang::interp::CheckConst(), and clang::interp::interp__builtin_is_within_lifetime().
Program& clang::interp::InterpState::P |
Reference to the module containing all bytecode.
Definition at line 170 of file InterpState.h.
Referenced by CheckGlobal(), clang::interp::compileFunction(), clang::interp::copyPrimitiveMemory(), clang::interp::copyPrimitiveMemory(), clang::interp::GetGlobal(), clang::interp::GetGlobalUnchecked(), clang::interp::GetPtrGlobal(), clang::interp::InitGlobal(), clang::interp::InitGlobalTemp(), clang::interp::interp__builtin_operator_new(), InterpState(), InterpState(), clang::interp::ReadArg(), and ~InterpState().
SmallVectorImpl<PartialDiagnosticAt>* clang::interp::InterpState::PrevDiags = nullptr |
Things needed to do speculative execution.
Definition at line 184 of file InterpState.h.
Referenced by clang::interp::EndSpeculation(), and clang::interp::StartSpeculation().
llvm::SmallVector< std::pair<const Expr *, const LifetimeExtendedTemporaryDecl *> > clang::interp::InterpState::SeenGlobalTemporaries |
Definition at line 190 of file InterpState.h.
Referenced by clang::interp::InitGlobalTemp(), and clang::interp::InitGlobalTempComp().
unsigned clang::interp::InterpState::SpeculationDepth = 0 |
Definition at line 185 of file InterpState.h.
Referenced by clang::interp::EndSpeculation(), and clang::interp::StartSpeculation().
InterpStack& clang::interp::InterpState::Stk |
Temporary stack.
Definition at line 172 of file InterpState.h.
Referenced by clang::interp::Activate(), clang::interp::Add(), clang::interp::Addf(), clang::interp::AddOffset(), clang::interp::AddSubMulHelper(), clang::interp::Alloc(), clang::interp::AllocCN(), clang::interp::AllocN(), clang::interp::ArrayDecay(), clang::interp::ArrayElem(), clang::interp::ArrayElemPop(), clang::interp::ArrayElemPtr(), clang::interp::ArrayElemPtrPop(), clang::interp::Assume(), 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::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::CastMemberPtrPtr(), clang::interp::CastPointerIntegral(), clang::interp::CastPointerIntegralAP(), clang::interp::CastPointerIntegralAPS(), clang::interp::CheckDestruction(), clang::interp::CheckEnumValue(), clang::interp::CheckNewTypeMismatch(), clang::interp::CheckNewTypeMismatchArray(), clang::interp::CheckNonNullArg(), clang::interp::CheckNonNullArgs(), clang::interp::CheckNull(), 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::Dec(), clang::interp::DecayPtr(), clang::interp::Decf(), clang::interp::DecfPop(), clang::interp::DecPop(), 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::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::Free(), 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::GetMemberPtr(), clang::interp::GetMemberPtrBase(), clang::interp::GetMemberPtrBasePop(), 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::GetThisField(), clang::interp::GetTypeid(), clang::interp::GetTypeidPtr(), clang::interp::Inc(), clang::interp::IncDecFloatHelper(), clang::interp::IncDecHelper(), clang::interp::IncDecPtrHelper(), clang::interp::Incf(), clang::interp::IncfPop(), clang::interp::IncPop(), 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_abs(), clang::interp::interp__builtin_arithmetic_fence(), clang::interp::interp__builtin_assume(), clang::interp::interp__builtin_assume_aligned(), clang::interp::interp__builtin_atomic_lock_free(), clang::interp::interp__builtin_bitreverse(), clang::interp::interp__builtin_blend(), clang::interp::interp__builtin_bswap(), clang::interp::interp__builtin_c11_atomic_is_lock_free(), clang::interp::interp__builtin_carryop(), clang::interp::interp__builtin_clrsb(), clang::interp::interp__builtin_clz(), clang::interp::interp__builtin_complex(), clang::interp::interp__builtin_copysign(), clang::interp::interp__builtin_ctz(), clang::interp::interp__builtin_eh_return_data_regno(), clang::interp::interp__builtin_elementwise_abs(), clang::interp::interp__builtin_elementwise_countzeroes(), clang::interp::interp__builtin_elementwise_int_binop(), clang::interp::interp__builtin_elementwise_maxmin(), clang::interp::interp__builtin_elementwise_popcount(), 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_ffs(), 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_bextr(), clang::interp::interp__builtin_ia32_pmul(), clang::interp::interp__builtin_inf(), 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_parity(), clang::interp::interp__builtin_popcount(), clang::interp::interp__builtin_ptrauth_string_discriminator(), clang::interp::interp__builtin_rotate(), clang::interp::interp__builtin_select(), 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_x86_insert_subvector(), 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::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::popArg(), clang::interp::popToAPSInt(), clang::interp::popToAPSInt(), clang::interp::PreDec(), clang::interp::PreInc(), 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::StartLifetime(), 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().