13 #ifndef LLVM_CLANG_AST_INTERP_BYTECODESTMTGEN_H 14 #define LLVM_CLANG_AST_INTERP_BYTECODESTMTGEN_H 25 #include "llvm/ADT/Optional.h" 34 template <
class Emitter>
class LoopScope;
35 template <
class Emitter>
class SwitchScope;
36 template <
class Emitter>
class LabelScope;
39 template <
class Emitter>
41 using LabelTy =
typename Emitter::LabelTy;
42 using AddrTy =
typename Emitter::AddrTy;
44 using CaseMap = llvm::DenseMap<const SwitchCase *, LabelTy>;
47 template<
typename... Tys>
60 bool visitStmt(
const Stmt *S);
62 bool visitDeclStmt(
const DeclStmt *DS);
64 bool visitIfStmt(
const IfStmt *IS);
67 bool visitVarDecl(
const VarDecl *VD);
Represents a function declaration or definition.
Sets the context for break/continue statements.
Stmt - This represents one statement.
IfStmt - This represents an if/then/else.
Scope managing label targets.
constexpr XRayInstrMask Function
ByteCodeStmtGen(Tys &&... Args)
Represents a variable declaration or definition.
Compilation context for statements.
CompoundStmt - This represents a group of statements like { stmt stmt }.
typename Emitter::AddrTy AddrTy
ReturnStmt - This represents a return, optionally of an expression: return; return 4;...
DeclStmt - Adaptor class for mixing declarations with statements and expressions. ...
bool visitFunc(const FunctionDecl *F) override
Dataflow Directional Tag Classes.
Compilation context for expressions.
typename Emitter::LabelTy LabelTy