13#ifndef LLVM_CLANG_AST_INTERP_EVALEMITTER_H
14#define LLVM_CLANG_AST_INTERP_EVALEMITTER_H
20#include "llvm/Support/Error.h"
38 bool ConvertResultToRValue =
false);
72 llvm::DenseMap<const ParmVarDecl *, ParamOffset>
Params;
90 bool ConvertResultToRValue =
false;
93 bool CheckFullyInitialized =
false;
96 llvm::DenseMap<unsigned, std::unique_ptr<char[]>> Locals;
98 Block *getLocal(
unsigned Index)
const {
99 auto It = Locals.find(Index);
100 assert(It != Locals.end() &&
"Missing local variable");
101 return reinterpret_cast<Block *
>(It->second.get());
119 bool isActive()
const {
return CurrentLabel == ActiveLabel; }
122#define GET_EVAL_PROTO
123#include "Opcodes.inc"
This represents one expression.
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.
An emitter which evaluates opcodes as they are emitted.
bool jump(const LabelTy &Label)
EvaluationResult interpretExpr(const Expr *E, bool ConvertResultToRValue=false)
EvaluationResult interpretDecl(const VarDecl *VD, bool CheckFullyInitialized)
virtual bool visitExpr(const Expr *E)=0
Methods implemented by the compiler.
bool jumpFalse(const LabelTy &Label)
Local createLocal(Descriptor *D)
Callback for registering a local.
void emitLabel(LabelTy Label)
Define a label.
bool fallthrough(const LabelTy &Label)
LabelTy getLabel()
Create a label.
llvm::DenseMap< const ValueDecl *, ParamOffset > LambdaCaptures
Lambda captures.
llvm::DenseMap< const ParmVarDecl *, ParamOffset > Params
Parameter indices.
ParamOffset LambdaThisCapture
Offset of the This parameter in a lambda record.
SourceInfo getSource(const Function *F, CodePtr PC) const override
Returns the source location of the current opcode.
llvm::SmallVector< SmallVector< Local, 8 >, 2 > Descriptors
Local descriptors.
virtual bool visitDecl(const VarDecl *VD)=0
bool jumpTrue(const LabelTy &Label)
Emits jumps.
Defines the result of an evaluation.
bool hasBody() const
Checks if the function already has a body attached.
SourceInfo getSource(CodePtr PC) const
Returns the source information at a given PC.
Stack frame storing temporaries and parameters.
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.
Interface for the VM to interact with the AST walker's context.
The JSON file list parser is used to communicate input to InstallAPI.
__UINTPTR_TYPE__ uintptr_t
An unsigned integer type with the property that any valid pointer to void can be converted to this ty...
Describes a memory block created by an allocation site.
Information about a local's storage.