clang  10.0.0svn
Public Member Functions | Public Attributes | List of all members
clang::interp::InterpState Class Referencefinal

Interpreter context. More...

#include "/opt/doxygen-docs/src/llvm/tools/clang/lib/AST/Interp/InterpState.h"

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

Public Member Functions

 InterpState (State &Parent, Program &P, InterpStack &Stk, Context &Ctx, SourceMapper *M=nullptr)
 
 ~InterpState ()
 
FramegetSplitFrame ()
 
FramegetCurrentFrame () override
 
unsigned getCallStackDepth () override
 
const FramegetBottomFrame () const override
 
Expr::EvalStatusgetEvalStatus () const override
 
ASTContextgetCtx () const override
 
bool checkingForUndefinedBehavior () const override
 
bool keepEvaluatingAfterFailure () const override
 
bool checkingPotentialConstantExpression () const override
 
bool noteUndefinedBehavior () override
 
bool hasActiveDiagnostic () override
 
void setActiveDiagnostic (bool Flag) override
 
void setFoldFailureDiagnostic (bool Flag) override
 
bool hasPriorDiagnostic () override
 
bool reportOverflow (const Expr *E, const llvm::APSInt &Value)
 Reports overflow and return true if evaluation should continue. More...
 
void deallocate (Block *B)
 Deallocates a pointer. More...
 
SourceInfo getSource (Function *F, CodePtr PC) const override
 Delegates source mapping to the mapper. More...
 
- Public Member Functions inherited from clang::interp::State
virtual ~State ()
 
OptionalDiagnostic FFDiag (SourceLocation Loc, diag::kind DiagId=diag::note_invalid_subexpr_in_const_expr, unsigned ExtraNotes=0)
 
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. More...
 
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. More...
 
void addNotes (ArrayRef< PartialDiagnosticAt > Diags)
 Add a stack of notes to a prior diagnostic. More...
 
DiagnosticBuilder report (SourceLocation Loc, diag::kind DiagId)
 Directly reports a diagnostic message. More...
 
const LangOptionsgetLangOpts () const
 
- Public Member Functions inherited from clang::interp::SourceMapper
virtual ~SourceMapper ()
 
const ExprgetExpr (Function *F, CodePtr PC) const
 Returns the expression if an opcode belongs to one, null otherwise. More...
 
SourceLocation getLocation (Function *F, CodePtr PC) const
 Returns the location from which an opcode originates. More...
 

Public Attributes

ProgramP
 Reference to the module containing all bytecode. More...
 
InterpStackStk
 Temporary stack. More...
 
ContextCtx
 Interpreter Context. More...
 
InterpFrameCurrent = nullptr
 The current frame. More...
 
unsigned CallStackDepth
 Call stack depth. More...
 

Detailed Description

Interpreter context.

Definition at line 34 of file InterpState.h.

Constructor & Destructor Documentation

◆ InterpState()

InterpState::InterpState ( State Parent,
Program P,
InterpStack Stk,
Context Ctx,
SourceMapper M = nullptr 
)

Definition at line 24 of file InterpState.cpp.

◆ ~InterpState()

InterpState::~InterpState ( )

Definition at line 29 of file InterpState.cpp.

References Current.

Member Function Documentation

◆ checkingForUndefinedBehavior()

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

◆ checkingPotentialConstantExpression()

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

◆ deallocate()

void InterpState::deallocate ( Block B)

◆ getBottomFrame()

const Frame* clang::interp::InterpState::getBottomFrame ( ) const
inlineoverridevirtual

Implements clang::interp::State.

Definition at line 45 of file InterpState.h.

References clang::interp::State::getBottomFrame().

◆ getCallStackDepth()

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

Implements clang::interp::State.

Definition at line 44 of file InterpState.h.

References CallStackDepth.

◆ getCtx()

ASTContext& clang::interp::InterpState::getCtx ( ) const
inlineoverridevirtual

◆ getCurrentFrame()

Frame * InterpState::getCurrentFrame ( )
overridevirtual

◆ getEvalStatus()

Expr::EvalStatus& clang::interp::InterpState::getEvalStatus ( ) const
inlineoverridevirtual

Implements clang::interp::State.

Definition at line 50 of file InterpState.h.

References clang::interp::State::getEvalStatus().

◆ getSource()

SourceInfo clang::interp::InterpState::getSource ( Function F,
CodePtr  PC 
) const
inlineoverridevirtual

Delegates source mapping to the mapper.

Implements clang::interp::SourceMapper.

Definition at line 84 of file InterpState.h.

References clang::interp::Function::getSource(), and clang::interp::SourceMapper::getSource().

Referenced by clang::interp::InterpFrame::getSource().

◆ getSplitFrame()

Frame* clang::interp::InterpState::getSplitFrame ( )
inline

◆ hasActiveDiagnostic()

bool clang::interp::InterpState::hasActiveDiagnostic ( )
inlineoverridevirtual

Implements clang::interp::State.

Definition at line 68 of file InterpState.h.

References clang::interp::State::hasActiveDiagnostic().

◆ hasPriorDiagnostic()

bool clang::interp::InterpState::hasPriorDiagnostic ( )
inlineoverridevirtual

◆ keepEvaluatingAfterFailure()

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

Implements clang::interp::State.

Definition at line 59 of file InterpState.h.

References clang::interp::State::keepEvaluatingAfterFailure().

◆ noteUndefinedBehavior()

bool clang::interp::InterpState::noteUndefinedBehavior ( )
inlineoverridevirtual

◆ reportOverflow()

bool InterpState::reportOverflow ( const Expr E,
const llvm::APSInt Value 
)

Reports overflow and return true if evaluation should continue.

Definition at line 51 of file InterpState.cpp.

References clang::interp::State::CCEDiag(), clang::Expr::getType(), and noteUndefinedBehavior().

Referenced by hasPriorDiagnostic().

◆ setActiveDiagnostic()

void clang::interp::InterpState::setActiveDiagnostic ( bool  Flag)
inlineoverridevirtual

Implements clang::interp::State.

Definition at line 69 of file InterpState.h.

References clang::interp::State::setActiveDiagnostic().

◆ setFoldFailureDiagnostic()

void clang::interp::InterpState::setFoldFailureDiagnostic ( bool  Flag)
inlineoverridevirtual

Implements clang::interp::State.

Definition at line 72 of file InterpState.h.

References clang::interp::State::setFoldFailureDiagnostic().

Member Data Documentation

◆ CallStackDepth

unsigned clang::interp::InterpState::CallStackDepth

Call stack depth.

Definition at line 106 of file InterpState.h.

Referenced by getCallStackDepth().

◆ Ctx

Context& clang::interp::InterpState::Ctx

Interpreter Context.

Definition at line 102 of file InterpState.h.

Referenced by clang::interp::InterpFrame::describe().

◆ Current

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

◆ P

Program& clang::interp::InterpState::P

Reference to the module containing all bytecode.

Definition at line 98 of file InterpState.h.

Referenced by clang::interp::GetGlobal(), clang::interp::GetPtrGlobal(), and clang::interp::InitGlobal().

◆ Stk

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

Temporary stack.

Definition at line 100 of file InterpState.h.

Referenced by clang::interp::Add(), clang::interp::AddSubMulHelper(), clang::interp::Cast(), clang::interp::CmpHelper(), clang::interp::Const(), clang::interp::Dup(), clang::interp::ExpandPtr(), clang::interp::EvalEmitter::fallthrough(), clang::interp::GetField(), clang::interp::GetFieldPop(), clang::interp::GetGlobal(), clang::interp::GetLocal(), clang::interp::GetParam(), clang::interp::GetPtrActiveField(), clang::interp::GetPtrActiveThisField(), clang::interp::GetPtrBase(), clang::interp::GetPtrField(), clang::interp::GetPtrGlobal(), clang::interp::GetPtrLocal(), clang::interp::GetPtrParam(), clang::interp::GetPtrThisBase(), clang::interp::GetPtrThisField(), clang::interp::GetPtrVirtBase(), clang::interp::GetThisField(), clang::interp::InitBitField(), clang::interp::InitElem(), clang::interp::InitElemPop(), clang::interp::InitField(), clang::interp::InitFieldActive(), clang::interp::InitGlobal(), clang::interp::InitPop(), clang::interp::InitThisBitField(), clang::interp::InitThisField(), clang::interp::InitThisFieldActive(), clang::interp::InRange(), clang::interp::EvalEmitter::jumpFalse(), clang::interp::EvalEmitter::jumpTrue(), clang::interp::Load(), clang::interp::LoadPop(), clang::interp::Mul(), clang::interp::NarrowPtr(), clang::interp::Null(), clang::interp::OffsetHelper(), clang::interp::Pop(), clang::interp::InterpFrame::popArgs(), clang::interp::SetField(), clang::interp::SetLocal(), clang::interp::SetParam(), clang::interp::SetThisField(), clang::interp::ShiftLeft(), clang::interp::ShiftRight(), clang::interp::Shl(), clang::interp::Shr(), clang::interp::Store(), clang::interp::StoreBitField(), clang::interp::StoreBitFieldPop(), clang::interp::StorePop(), clang::interp::Sub(), clang::interp::This(), clang::interp::VirtBaseHelper(), and clang::interp::Zero().


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