Lines Matching full:emitter
31 template <class Emitter> class LocalScope;
32 template <class Emitter> class DestructorScope;
33 template <class Emitter> class VariableScope;
34 template <class Emitter> class DeclScope;
35 template <class Emitter> class InitLinkScope;
36 template <class Emitter> class InitStackScope;
37 template <class Emitter> class OptionScope;
38 template <class Emitter> class ArrayIndexScope;
39 template <class Emitter> class SourceLocScope;
40 template <class Emitter> class LoopScope;
41 template <class Emitter> class LabelScope;
42 template <class Emitter> class SwitchScope;
43 template <class Emitter> class StmtExprScope;
45 template <class Emitter> class Compiler;
73 template <class Emitter>
74 bool emit(Compiler<Emitter> *Ctx, const Expr *E) const;
96 template <class Emitter>
97 class Compiler : public ConstStmtVisitor<Compiler<Emitter>, bool>,
98 public Emitter {
100 // Aliases for types defined in the emitter.
101 using LabelTy = typename Emitter::LabelTy;
102 using AddrTy = typename Emitter::AddrTy;
112 /// Initializes the compiler and the backend emitter.
115 : Emitter(Ctx, P, Args...), Ctx(Ctx), P(P) {} in Compiler()
297 friend class VariableScope<Emitter>;
298 friend class LocalScope<Emitter>;
299 friend class DestructorScope<Emitter>;
300 friend class DeclScope<Emitter>;
301 friend class InitLinkScope<Emitter>;
302 friend class InitStackScope<Emitter>;
303 friend class OptionScope<Emitter>;
304 friend class ArrayIndexScope<Emitter>;
305 friend class SourceLocScope<Emitter>;
307 friend class LoopScope<Emitter>;
308 friend class LabelScope<Emitter>;
309 friend class SwitchScope<Emitter>;
310 friend class StmtExprScope<Emitter>;
364 VariableScope<Emitter> *VarScope = nullptr;
406 template <class Emitter> class VariableScope {
408 VariableScope(Compiler<Emitter> *Ctx, const ValueDecl *VD) in VariableScope()
456 Compiler<Emitter> *Ctx;
463 template <class Emitter> class LocalScope : public VariableScope<Emitter> {
465 LocalScope(Compiler<Emitter> *Ctx) : VariableScope<Emitter>(Ctx, nullptr) {} in LocalScope()
466 LocalScope(Compiler<Emitter> *Ctx, const ValueDecl *VD) in LocalScope()
467 : VariableScope<Emitter>(Ctx, VD) {} in LocalScope()
547 template <class Emitter> class DestructorScope final {
549 DestructorScope(LocalScope<Emitter> &OtherScope) : OtherScope(OtherScope) {} in DestructorScope()
554 LocalScope<Emitter> &OtherScope;
558 template <class Emitter> class BlockScope final : public LocalScope<Emitter> {
560 BlockScope(Compiler<Emitter> *Ctx) : LocalScope<Emitter>(Ctx) {} in BlockScope()
570 template <class Emitter> class ArrayIndexScope final {
572 ArrayIndexScope(Compiler<Emitter> *Ctx, uint64_t Index) : Ctx(Ctx) { in ArrayIndexScope()
580 Compiler<Emitter> *Ctx;
584 template <class Emitter> class SourceLocScope final {
586 SourceLocScope(Compiler<Emitter> *Ctx, const Expr *DefaultExpr) : Ctx(Ctx) { in SourceLocScope()
601 Compiler<Emitter> *Ctx;
605 template <class Emitter> class InitLinkScope final {
607 InitLinkScope(Compiler<Emitter> *Ctx, InitLink &&Link) : Ctx(Ctx) { in InitLinkScope()
614 Compiler<Emitter> *Ctx;
617 template <class Emitter> class InitStackScope final {
619 InitStackScope(Compiler<Emitter> *Ctx, bool Active) in InitStackScope()
627 Compiler<Emitter> *Ctx;