13#ifndef LLVM_CLANG_AST_INTERP_INTERPSTATE_H
14#define LLVM_CLANG_AST_INTERP_INTERPSTATE_H
55 return Parent.getBottomFrame();
60 return Parent.getEvalStatus();
66 return Parent.checkingForUndefinedBehavior();
69 return Parent.keepEvaluatingAfterFailure();
72 return Parent.checkingPotentialConstantExpression();
75 return Parent.noteUndefinedBehavior();
80 Parent.setActiveDiagnostic(Flag);
83 Parent.setFoldFailureDiagnostic(Flag);
98 assert(F &&
"Function cannot be null");
139 std::pair<const Expr *, const LifetimeExtendedTemporaryDecl *>>
Implements a partial diagnostic which may not be emitted.
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
This represents one expression.
Encodes a location in the source.
Represents a variable declaration or definition.
A memory block, either on the stack or in the heap.
Pointer into the code segment.
Holds all information required to evaluate constexpr code in a module.
Descriptor for a dead block.
Manages dynamic memory allocations done during bytecode interpretation.
Defines the result of an evaluation.
Base class for stack frames, shared between VM and walker.
SourceInfo getSource(CodePtr PC) const
Returns the source information at a given PC.
Frame storing local variables.
unsigned getDepth() const
Stack frame storing temporaries and parameters.
const Frame * getBottomFrame() const override
unsigned getCallStackDepth() override
Expr::EvalStatus & getEvalStatus() const override
Context & getContext() const
bool keepEvaluatingAfterFailure() const override
bool reportOverflow(const Expr *E, const llvm::APSInt &Value)
Reports overflow and return true if evaluation should continue.
bool noteUndefinedBehavior() override
DynamicAllocator & getAllocator()
Context & Ctx
Interpreter Context.
SourceInfo getSource(const Function *F, CodePtr PC) const override
Delegates source mapping to the mapper.
Frame * getCurrentFrame() override
InterpState(const InterpState &)=delete
llvm::SmallVector< std::pair< const Expr *, const LifetimeExtendedTemporaryDecl * > > SeenGlobalTemporaries
InterpStack & Stk
Temporary stack.
bool maybeDiagnoseDanglingAllocations()
Diagnose any dynamic allocations that haven't been freed yet.
SourceLocation EvalLocation
Source location of the evaluating expression.
bool inConstantContext() const
const VarDecl * EvaluatingDecl
Declaration we're initializing/evaluting, if any.
InterpFrame * Current
The current frame.
bool hasActiveDiagnostic() override
void setActiveDiagnostic(bool Flag) override
bool checkingForUndefinedBehavior() const override
void setFoldFailureDiagnostic(bool Flag) override
InterpState & operator=(const InterpState &)=delete
void deallocate(Block *B)
Deallocates a pointer.
ASTContext & getCtx() const override
void setEvalLocation(SourceLocation SL)
bool checkingPotentialConstantExpression() const override
bool hasPriorDiagnostic() override
Program & P
Reference to the module containing all bytecode.
The program contains and links the bytecode for all functions.
Describes the statement/declaration an opcode was generated from.
Interface for classes which map locations to sources.
virtual SourceInfo getSource(const Function *F, CodePtr PC) const =0
Returns source information for a given PC in a function.
Interface for the VM to interact with the AST walker's context.
The JSON file list parser is used to communicate input to InstallAPI.
EvalStatus is a struct with detailed info about an evaluation in progress.