Go to the documentation of this file.
13 #ifndef LLVM_CLANG_AST_INTERP_BYTECODESTMTGEN_H
14 #define LLVM_CLANG_AST_INTERP_BYTECODESTMTGEN_H
25 #include "llvm/ADT/Optional.h"
30 template <
class Emitter>
class LoopScope;
31 template <
class Emitter>
class SwitchScope;
32 template <
class Emitter>
class LabelScope;
35 template <
class Emitter>
37 using LabelTy =
typename Emitter::LabelTy;
38 using AddrTy =
typename Emitter::AddrTy;
40 using CaseMap = llvm::DenseMap<const SwitchCase *, LabelTy>;
43 template<
typename... Tys>
56 bool visitStmt(
const Stmt *S);
58 bool visitDeclStmt(
const DeclStmt *DS);
60 bool visitIfStmt(
const IfStmt *IS);
63 bool visitVarDecl(
const VarDecl *VD);
Compilation context for statements.
Compilation context for expressions.
IfStmt - This represents an if/then/else.
ByteCodeStmtGen(Tys &&... Args)
typename Emitter::AddrTy AddrTy
CompoundStmt - This represents a group of statements like { stmt stmt }.
Represents a variable declaration or definition.
Scope managing label targets.
Sets the context for break/continue statements.
bool visitFunc(const FunctionDecl *F) override
typename Emitter::LabelTy LabelTy
DeclStmt - Adaptor class for mixing declarations with statements and expressions.
Stmt - This represents one statement.
Represents a function declaration or definition.
ReturnStmt - This represents a return, optionally of an expression: return; return 4;.