mini-llvm 0.1.0
Loading...
Searching...
No Matches
InstructionVisitor.h
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2
3#pragma once
4
5#include <cstdlib>
6#include <utility>
7
9
10namespace mini_llvm::ir {
11
12class Add;
13class Alloca;
14class And;
15class ASHR;
16class BitCast;
17class Br;
18class Call;
19class CondBr;
20class FAdd;
21class FCmp;
22class FDiv;
23class FMul;
24class FNeg;
25class FPExt;
26class FPToSI;
27class FPToUI;
28class FPTrunc;
29class FRem;
30class FSub;
31class GetElementPtr;
32class ICmp;
33class IndirectCall;
34class IntToPtr;
35class Load;
36class LSHR;
37class Mul;
38class Or;
39class Phi;
40class PtrToInt;
41class Ret;
42class SDiv;
43class Select;
44class SExt;
45class SHL;
46class SIToFP;
47class SRem;
48class Store;
49class Sub;
50class Terminator;
51class Trunc;
52class UDiv;
53class UIToFP;
54class URem;
55class Xor;
56class ZExt;
57
59public:
60 virtual ~InstructionVisitor() = default;
61
62 InstructionVisitor() = default;
63
66
69
70 virtual void visitAdd(Add &I) { visitAdd(std::as_const(I)); }
71 virtual void visitAlloca(Alloca &I) { visitAlloca(std::as_const(I)); }
72 virtual void visitAnd(And &I) { visitAnd(std::as_const(I)); }
73 virtual void visitASHR(ASHR &I) { visitASHR(std::as_const(I)); }
74 virtual void visitBitCast(BitCast &I) { visitBitCast(std::as_const(I)); }
75 virtual void visitBr(Br &I) { visitBr(std::as_const(I)); }
76 virtual void visitCall(Call &I) { visitCall(std::as_const(I)); }
77 virtual void visitCondBr(CondBr &I) { visitCondBr(std::as_const(I)); }
78 virtual void visitFAdd(FAdd &I) { visitFAdd(std::as_const(I)); }
79 virtual void visitFCmp(FCmp &I) { visitFCmp(std::as_const(I)); }
80 virtual void visitFDiv(FDiv &I) { visitFDiv(std::as_const(I)); }
81 virtual void visitFMul(FMul &I) { visitFMul(std::as_const(I)); }
82 virtual void visitFNeg(FNeg &I) { visitFNeg(std::as_const(I)); }
83 virtual void visitFPExt(FPExt &I) { visitFPExt(std::as_const(I)); }
84 virtual void visitFPToSI(FPToSI &I) { visitFPToSI(std::as_const(I)); }
85 virtual void visitFPToUI(FPToUI &I) { visitFPToUI(std::as_const(I)); }
86 virtual void visitFPTrunc(FPTrunc &I) { visitFPTrunc(std::as_const(I)); }
87 virtual void visitFRem(FRem &I) { visitFRem(std::as_const(I)); }
88 virtual void visitFSub(FSub &I) { visitFSub(std::as_const(I)); }
89 virtual void visitGetElementPtr(GetElementPtr &I) { visitGetElementPtr(std::as_const(I)); }
90 virtual void visitICmp(ICmp &I) { visitICmp(std::as_const(I)); }
91 virtual void visitIndirectCall(IndirectCall &I) { visitIndirectCall(std::as_const(I)); }
92 virtual void visitIntToPtr(IntToPtr &I) {visitIntToPtr(std::as_const(I)); }
93 virtual void visitLoad(Load &I) { visitLoad(std::as_const(I)); }
94 virtual void visitLSHR(LSHR &I) { visitLSHR(std::as_const(I)); }
95 virtual void visitMul(Mul &I) { visitMul(std::as_const(I)); }
96 virtual void visitOr(Or &I) { visitOr(std::as_const(I)); }
97 virtual void visitPhi(Phi &I) { visitPhi(std::as_const(I)); }
98 virtual void visitPtrToInt(PtrToInt &I) { visitPtrToInt(std::as_const(I)); }
99 virtual void visitRet(Ret &I) { visitRet(std::as_const(I)); }
100 virtual void visitSDiv(SDiv &I) { visitSDiv(std::as_const(I)); }
101 virtual void visitSelect(Select &I) { visitSelect(std::as_const(I)); }
102 virtual void visitSExt(SExt &I) { visitSExt(std::as_const(I)); }
103 virtual void visitSHL(SHL &I) { visitSHL(std::as_const(I)); }
104 virtual void visitSIToFP(SIToFP &I) { visitSIToFP(std::as_const(I)); }
105 virtual void visitSRem(SRem &I) { visitSRem(std::as_const(I)); }
106 virtual void visitStore(Store &I) { visitStore(std::as_const(I)); }
107 virtual void visitSub(Sub &I) { visitSub(std::as_const(I)); }
108 virtual void visitTerminator(Terminator &I) { visitTerminator(std::as_const(I)); }
109 virtual void visitTrunc(Trunc &I) { visitTrunc(std::as_const(I)); }
110 virtual void visitUDiv(UDiv &I) { visitUDiv(std::as_const(I)); }
111 virtual void visitURem(URem &I) { visitURem(std::as_const(I)); }
112 virtual void visitUIToFP(UIToFP &I) { visitUIToFP(std::as_const(I)); }
113 virtual void visitXor(Xor &I) { visitXor(std::as_const(I)); }
114 virtual void visitZExt(ZExt &I) { visitZExt(std::as_const(I)); }
115
116 virtual void visitAdd(const Add &) { abort(); }
117 virtual void visitAlloca(const Alloca &) { abort(); }
118 virtual void visitAnd(const And &) { abort(); }
119 virtual void visitASHR(const ASHR &) { abort(); }
120 virtual void visitBitCast(const BitCast &) { abort(); }
121 virtual void visitBr(const Br &) { abort(); }
122 virtual void visitCall(const Call &) { abort(); }
123 virtual void visitCondBr(const CondBr &) { abort(); }
124 virtual void visitFAdd(const FAdd &) { abort(); }
125 virtual void visitFCmp(const FCmp &) { abort(); }
126 virtual void visitFDiv(const FDiv &) { abort(); }
127 virtual void visitFMul(const FMul &) { abort(); }
128 virtual void visitFNeg(const FNeg &) { abort(); }
129 virtual void visitFPExt(const FPExt &) { abort(); }
130 virtual void visitFPToSI(const FPToSI &) { abort(); }
131 virtual void visitFPToUI(const FPToUI &) { abort(); }
132 virtual void visitFPTrunc(const FPTrunc &) { abort(); }
133 virtual void visitFRem(const FRem &) { abort(); }
134 virtual void visitFSub(const FSub &) { abort(); }
135 virtual void visitGetElementPtr(const GetElementPtr &) { abort(); }
136 virtual void visitICmp(const ICmp &) { abort(); }
137 virtual void visitIndirectCall(const IndirectCall &) { abort(); }
138 virtual void visitIntToPtr(const IntToPtr &) { abort(); }
139 virtual void visitLoad(const Load &) { abort(); }
140 virtual void visitLSHR(const LSHR &) { abort(); }
141 virtual void visitMul(const Mul &) { abort(); }
142 virtual void visitOr(const Or &) { abort(); }
143 virtual void visitPhi(const Phi &) { abort(); }
144 virtual void visitPtrToInt(const PtrToInt &) { abort(); }
145 virtual void visitRet(const Ret &) { abort(); }
146 virtual void visitSDiv(const SDiv &) { abort(); }
147 virtual void visitSelect(const Select &) { abort(); }
148 virtual void visitSExt(const SExt &) { abort(); }
149 virtual void visitSHL(const SHL &) { abort(); }
150 virtual void visitSIToFP(const SIToFP &) { abort(); }
151 virtual void visitSRem(const SRem &) { abort(); }
152 virtual void visitStore(const Store &) { abort(); }
153 virtual void visitSub(const Sub &) { abort(); }
154 virtual void visitTerminator(const Terminator &) { abort(); }
155 virtual void visitTrunc(const Trunc &) { abort(); }
156 virtual void visitUDiv(const UDiv &) { abort(); }
157 virtual void visitUIToFP(const UIToFP &) { abort(); }
158 virtual void visitURem(const URem &) { abort(); }
159 virtual void visitXor(const Xor &) { abort(); }
160 virtual void visitZExt(const ZExt &) { abort(); }
161};
162
163} // namespace mini_llvm::ir
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
Definition ASHR.h:16
Definition Add.h:17
Definition Alloca.h:19
Definition And.h:17
Definition BitCast.h:21
Definition Br.h:21
Definition Call.h:26
Definition CondBr.h:21
Definition FAdd.h:17
Definition FCmp.h:18
Definition FDiv.h:17
Definition FMul.h:17
Definition FNeg.h:17
Definition FPExt.h:18
Definition FPToSI.h:18
Definition FPToUI.h:18
Definition FPTrunc.h:18
Definition FRem.h:17
Definition FSub.h:17
Definition GetElementPtr.h:23
Definition ICmp.h:18
Definition IndirectCall.h:26
virtual void visitIntToPtr(const IntToPtr &)
Definition InstructionVisitor.h:138
virtual void visitFPExt(FPExt &I)
Definition InstructionVisitor.h:83
virtual void visitSDiv(const SDiv &)
Definition InstructionVisitor.h:146
virtual void visitSDiv(SDiv &I)
Definition InstructionVisitor.h:100
virtual void visitCall(Call &I)
Definition InstructionVisitor.h:76
virtual void visitSelect(const Select &)
Definition InstructionVisitor.h:147
virtual void visitURem(URem &I)
Definition InstructionVisitor.h:111
virtual void visitIndirectCall(const IndirectCall &)
Definition InstructionVisitor.h:137
virtual void visitFSub(FSub &I)
Definition InstructionVisitor.h:88
virtual void visitFPToSI(FPToSI &I)
Definition InstructionVisitor.h:84
virtual void visitAdd(Add &I)
Definition InstructionVisitor.h:70
virtual void visitFPToUI(const FPToUI &)
Definition InstructionVisitor.h:131
InstructionVisitor(InstructionVisitor &&)=delete
virtual void visitFAdd(FAdd &I)
Definition InstructionVisitor.h:78
virtual void visitSub(Sub &I)
Definition InstructionVisitor.h:107
virtual void visitZExt(const ZExt &)
Definition InstructionVisitor.h:160
virtual void visitSRem(const SRem &)
Definition InstructionVisitor.h:151
virtual void visitAlloca(Alloca &I)
Definition InstructionVisitor.h:71
virtual void visitFAdd(const FAdd &)
Definition InstructionVisitor.h:124
virtual void visitOr(const Or &)
Definition InstructionVisitor.h:142
virtual void visitFNeg(const FNeg &)
Definition InstructionVisitor.h:128
virtual void visitFPToUI(FPToUI &I)
Definition InstructionVisitor.h:85
virtual void visitFDiv(const FDiv &)
Definition InstructionVisitor.h:126
virtual void visitUIToFP(UIToFP &I)
Definition InstructionVisitor.h:112
virtual void visitFRem(FRem &I)
Definition InstructionVisitor.h:87
virtual void visitFDiv(FDiv &I)
Definition InstructionVisitor.h:80
virtual void visitStore(const Store &)
Definition InstructionVisitor.h:152
virtual void visitCall(const Call &)
Definition InstructionVisitor.h:122
virtual void visitAlloca(const Alloca &)
Definition InstructionVisitor.h:117
virtual void visitCondBr(CondBr &I)
Definition InstructionVisitor.h:77
virtual void visitSExt(SExt &I)
Definition InstructionVisitor.h:102
virtual void visitIndirectCall(IndirectCall &I)
Definition InstructionVisitor.h:91
virtual void visitXor(const Xor &)
Definition InstructionVisitor.h:159
virtual void visitUDiv(const UDiv &)
Definition InstructionVisitor.h:156
virtual void visitSHL(const SHL &)
Definition InstructionVisitor.h:149
virtual void visitSIToFP(const SIToFP &)
Definition InstructionVisitor.h:150
virtual void visitMul(Mul &I)
Definition InstructionVisitor.h:95
virtual void visitFCmp(FCmp &I)
Definition InstructionVisitor.h:79
virtual void visitMul(const Mul &)
Definition InstructionVisitor.h:141
virtual void visitTerminator(Terminator &I)
Definition InstructionVisitor.h:108
virtual void visitSHL(SHL &I)
Definition InstructionVisitor.h:103
virtual void visitUIToFP(const UIToFP &)
Definition InstructionVisitor.h:157
virtual void visitASHR(const ASHR &)
Definition InstructionVisitor.h:119
virtual void visitFSub(const FSub &)
Definition InstructionVisitor.h:134
virtual void visitOr(Or &I)
Definition InstructionVisitor.h:96
virtual void visitFPTrunc(const FPTrunc &)
Definition InstructionVisitor.h:132
virtual void visitBitCast(BitCast &I)
Definition InstructionVisitor.h:74
virtual void visitFNeg(FNeg &I)
Definition InstructionVisitor.h:82
virtual void visitPtrToInt(const PtrToInt &)
Definition InstructionVisitor.h:144
virtual void visitAdd(const Add &)
Definition InstructionVisitor.h:116
virtual void visitSRem(SRem &I)
Definition InstructionVisitor.h:105
virtual void visitRet(Ret &I)
Definition InstructionVisitor.h:99
virtual void visitURem(const URem &)
Definition InstructionVisitor.h:158
virtual void visitPhi(Phi &I)
Definition InstructionVisitor.h:97
virtual void visitBr(const Br &)
Definition InstructionVisitor.h:121
virtual void visitLSHR(const LSHR &)
Definition InstructionVisitor.h:140
virtual void visitFPTrunc(FPTrunc &I)
Definition InstructionVisitor.h:86
InstructionVisitor & operator=(const InstructionVisitor &)=delete
virtual void visitFRem(const FRem &)
Definition InstructionVisitor.h:133
virtual void visitFPToSI(const FPToSI &)
Definition InstructionVisitor.h:130
virtual void visitGetElementPtr(const GetElementPtr &)
Definition InstructionVisitor.h:135
virtual void visitSelect(Select &I)
Definition InstructionVisitor.h:101
virtual void visitFMul(FMul &I)
Definition InstructionVisitor.h:81
virtual void visitICmp(ICmp &I)
Definition InstructionVisitor.h:90
virtual ~InstructionVisitor()=default
virtual void visitTrunc(Trunc &I)
Definition InstructionVisitor.h:109
virtual void visitAnd(const And &)
Definition InstructionVisitor.h:118
virtual void visitGetElementPtr(GetElementPtr &I)
Definition InstructionVisitor.h:89
virtual void visitUDiv(UDiv &I)
Definition InstructionVisitor.h:110
virtual void visitLoad(const Load &)
Definition InstructionVisitor.h:139
virtual void visitSExt(const SExt &)
Definition InstructionVisitor.h:148
virtual void visitFMul(const FMul &)
Definition InstructionVisitor.h:127
virtual void visitLoad(Load &I)
Definition InstructionVisitor.h:93
virtual void visitTrunc(const Trunc &)
Definition InstructionVisitor.h:155
virtual void visitRet(const Ret &)
Definition InstructionVisitor.h:145
virtual void visitTerminator(const Terminator &)
Definition InstructionVisitor.h:154
virtual void visitPhi(const Phi &)
Definition InstructionVisitor.h:143
virtual void visitBr(Br &I)
Definition InstructionVisitor.h:75
virtual void visitLSHR(LSHR &I)
Definition InstructionVisitor.h:94
virtual void visitAnd(And &I)
Definition InstructionVisitor.h:72
InstructionVisitor & operator=(InstructionVisitor &&)=delete
virtual void visitZExt(ZExt &I)
Definition InstructionVisitor.h:114
virtual void visitSub(const Sub &)
Definition InstructionVisitor.h:153
virtual void visitFPExt(const FPExt &)
Definition InstructionVisitor.h:129
InstructionVisitor(const InstructionVisitor &)=delete
virtual void visitCondBr(const CondBr &)
Definition InstructionVisitor.h:123
virtual void visitASHR(ASHR &I)
Definition InstructionVisitor.h:73
virtual void visitPtrToInt(PtrToInt &I)
Definition InstructionVisitor.h:98
virtual void visitIntToPtr(IntToPtr &I)
Definition InstructionVisitor.h:92
virtual void visitBitCast(const BitCast &)
Definition InstructionVisitor.h:120
virtual void visitICmp(const ICmp &)
Definition InstructionVisitor.h:136
virtual void visitXor(Xor &I)
Definition InstructionVisitor.h:113
virtual void visitStore(Store &I)
Definition InstructionVisitor.h:106
virtual void visitSIToFP(SIToFP &I)
Definition InstructionVisitor.h:104
virtual void visitFCmp(const FCmp &)
Definition InstructionVisitor.h:125
Definition IntToPtr.h:20
Definition LSHR.h:16
Definition Load.h:19
Definition Mul.h:17
Definition Or.h:17
Definition Phi.h:25
Definition PtrToInt.h:20
Definition Ret.h:22
Definition SDiv.h:17
Definition SExt.h:18
Definition SHL.h:17
Definition SIToFP.h:18
Definition SRem.h:17
Definition Select.h:19
Definition Store.h:20
Definition Sub.h:17
Definition Terminator.h:13
Definition Trunc.h:18
Definition UDiv.h:17
Definition UIToFP.h:18
Definition URem.h:17
Definition Xor.h:17
Definition ZExt.h:18
Definition Argument.h:13