summaryrefslogtreecommitdiff
path: root/src/ir/utils.h
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2020-11-12 10:15:52 -0800
committerGitHub <noreply@github.com>2020-11-12 10:15:52 -0800
commit1eb48a4f506a31e79be41f3bec091f799c6f5201 (patch)
tree3b405be9291131f484e0616b8f857601a11c37d0 /src/ir/utils.h
parentd41782f9cac8cb059ccc03f69e10d44849e3d10f (diff)
downloadbinaryen-1eb48a4f506a31e79be41f3bec091f799c6f5201.tar.gz
binaryen-1eb48a4f506a31e79be41f3bec091f799c6f5201.tar.bz2
binaryen-1eb48a4f506a31e79be41f3bec091f799c6f5201.zip
Remove boilerplate in utils.h (#3340)
Also avoid needing to #undef DELEGATE all the time.
Diffstat (limited to 'src/ir/utils.h')
-rw-r--r--src/ir/utils.h136
1 files changed, 8 insertions, 128 deletions
diff --git a/src/ir/utils.h b/src/ir/utils.h
index cd50aa1cc..0136fd11c 100644
--- a/src/ir/utils.h
+++ b/src/ir/utils.h
@@ -111,70 +111,10 @@ struct ReFinalize
std::map<Name, Type> breakValues;
- void visitBlock(Block* curr);
- void visitIf(If* curr);
- void visitLoop(Loop* curr);
- void visitBreak(Break* curr);
- void visitSwitch(Switch* curr);
- void visitCall(Call* curr);
- void visitCallIndirect(CallIndirect* curr);
- void visitLocalGet(LocalGet* curr);
- void visitLocalSet(LocalSet* curr);
- void visitGlobalGet(GlobalGet* curr);
- void visitGlobalSet(GlobalSet* curr);
- void visitLoad(Load* curr);
- void visitStore(Store* curr);
- void visitAtomicRMW(AtomicRMW* curr);
- void visitAtomicCmpxchg(AtomicCmpxchg* curr);
- void visitAtomicWait(AtomicWait* curr);
- void visitAtomicNotify(AtomicNotify* curr);
- void visitAtomicFence(AtomicFence* curr);
- void visitSIMDExtract(SIMDExtract* curr);
- void visitSIMDReplace(SIMDReplace* curr);
- void visitSIMDShuffle(SIMDShuffle* curr);
- void visitSIMDTernary(SIMDTernary* curr);
- void visitSIMDShift(SIMDShift* curr);
- void visitSIMDLoad(SIMDLoad* curr);
- void visitSIMDLoadStoreLane(SIMDLoadStoreLane* curr);
- void visitMemoryInit(MemoryInit* curr);
- void visitDataDrop(DataDrop* curr);
- void visitMemoryCopy(MemoryCopy* curr);
- void visitMemoryFill(MemoryFill* curr);
- void visitConst(Const* curr);
- void visitUnary(Unary* curr);
- void visitBinary(Binary* curr);
- void visitSelect(Select* curr);
- void visitDrop(Drop* curr);
- void visitReturn(Return* curr);
- void visitMemorySize(MemorySize* curr);
- void visitMemoryGrow(MemoryGrow* curr);
- void visitRefNull(RefNull* curr);
- void visitRefIsNull(RefIsNull* curr);
- void visitRefFunc(RefFunc* curr);
- void visitRefEq(RefEq* curr);
- void visitTry(Try* curr);
- void visitThrow(Throw* curr);
- void visitRethrow(Rethrow* curr);
- void visitBrOnExn(BrOnExn* curr);
- void visitNop(Nop* curr);
- void visitUnreachable(Unreachable* curr);
- void visitPop(Pop* curr);
- void visitTupleMake(TupleMake* curr);
- void visitTupleExtract(TupleExtract* curr);
- void visitI31New(I31New* curr);
- void visitI31Get(I31Get* curr);
- void visitRefTest(RefTest* curr);
- void visitRefCast(RefCast* curr);
- void visitBrOnCast(BrOnCast* curr);
- void visitRttCanon(RttCanon* curr);
- void visitRttSub(RttSub* curr);
- void visitStructNew(StructNew* curr);
- void visitStructGet(StructGet* curr);
- void visitStructSet(StructSet* curr);
- void visitArrayNew(ArrayNew* curr);
- void visitArrayGet(ArrayGet* curr);
- void visitArraySet(ArraySet* curr);
- void visitArrayLen(ArrayLen* curr);
+#define DELEGATE(CLASS_TO_VISIT) \
+ void visit##CLASS_TO_VISIT(CLASS_TO_VISIT* curr);
+
+#include "wasm-delegations.h"
void visitFunction(Function* curr);
@@ -196,70 +136,10 @@ private:
// Re-finalize a single node. This is slow, if you want to refinalize
// an entire ast, use ReFinalize
struct ReFinalizeNode : public OverriddenVisitor<ReFinalizeNode> {
- void visitBlock(Block* curr) { curr->finalize(); }
- void visitIf(If* curr) { curr->finalize(); }
- void visitLoop(Loop* curr) { curr->finalize(); }
- void visitBreak(Break* curr) { curr->finalize(); }
- void visitSwitch(Switch* curr) { curr->finalize(); }
- void visitCall(Call* curr) { curr->finalize(); }
- void visitCallIndirect(CallIndirect* curr) { curr->finalize(); }
- void visitLocalGet(LocalGet* curr) { curr->finalize(); }
- void visitLocalSet(LocalSet* curr) { curr->finalize(); }
- void visitGlobalGet(GlobalGet* curr) { curr->finalize(); }
- void visitGlobalSet(GlobalSet* curr) { curr->finalize(); }
- void visitLoad(Load* curr) { curr->finalize(); }
- void visitStore(Store* curr) { curr->finalize(); }
- void visitAtomicRMW(AtomicRMW* curr) { curr->finalize(); }
- void visitAtomicCmpxchg(AtomicCmpxchg* curr) { curr->finalize(); }
- void visitAtomicWait(AtomicWait* curr) { curr->finalize(); }
- void visitAtomicNotify(AtomicNotify* curr) { curr->finalize(); }
- void visitAtomicFence(AtomicFence* curr) { curr->finalize(); }
- void visitSIMDExtract(SIMDExtract* curr) { curr->finalize(); }
- void visitSIMDReplace(SIMDReplace* curr) { curr->finalize(); }
- void visitSIMDShuffle(SIMDShuffle* curr) { curr->finalize(); }
- void visitSIMDTernary(SIMDTernary* curr) { curr->finalize(); }
- void visitSIMDShift(SIMDShift* curr) { curr->finalize(); }
- void visitSIMDLoad(SIMDLoad* curr) { curr->finalize(); }
- void visitSIMDLoadStoreLane(SIMDLoadStoreLane* curr) { curr->finalize(); }
- void visitMemoryInit(MemoryInit* curr) { curr->finalize(); }
- void visitDataDrop(DataDrop* curr) { curr->finalize(); }
- void visitMemoryCopy(MemoryCopy* curr) { curr->finalize(); }
- void visitMemoryFill(MemoryFill* curr) { curr->finalize(); }
- void visitConst(Const* curr) { curr->finalize(); }
- void visitUnary(Unary* curr) { curr->finalize(); }
- void visitBinary(Binary* curr) { curr->finalize(); }
- void visitSelect(Select* curr) { curr->finalize(); }
- void visitDrop(Drop* curr) { curr->finalize(); }
- void visitReturn(Return* curr) { curr->finalize(); }
- void visitMemorySize(MemorySize* curr) { curr->finalize(); }
- void visitMemoryGrow(MemoryGrow* curr) { curr->finalize(); }
- void visitRefNull(RefNull* curr) { curr->finalize(); }
- void visitRefIsNull(RefIsNull* curr) { curr->finalize(); }
- void visitRefFunc(RefFunc* curr) { curr->finalize(); }
- void visitRefEq(RefEq* curr) { curr->finalize(); }
- void visitTry(Try* curr) { curr->finalize(); }
- void visitThrow(Throw* curr) { curr->finalize(); }
- void visitRethrow(Rethrow* curr) { curr->finalize(); }
- void visitBrOnExn(BrOnExn* curr) { curr->finalize(); }
- void visitNop(Nop* curr) { curr->finalize(); }
- void visitUnreachable(Unreachable* curr) { curr->finalize(); }
- void visitPop(Pop* curr) { curr->finalize(); }
- void visitTupleMake(TupleMake* curr) { curr->finalize(); }
- void visitTupleExtract(TupleExtract* curr) { curr->finalize(); }
- void visitI31New(I31New* curr) { curr->finalize(); }
- void visitI31Get(I31Get* curr) { curr->finalize(); }
- void visitRefTest(RefTest* curr) { curr->finalize(); }
- void visitRefCast(RefCast* curr) { curr->finalize(); }
- void visitBrOnCast(BrOnCast* curr) { curr->finalize(); }
- void visitRttCanon(RttCanon* curr) { curr->finalize(); }
- void visitRttSub(RttSub* curr) { curr->finalize(); }
- void visitStructNew(StructNew* curr) { curr->finalize(); }
- void visitStructGet(StructGet* curr) { curr->finalize(); }
- void visitStructSet(StructSet* curr) { curr->finalize(); }
- void visitArrayNew(ArrayNew* curr) { curr->finalize(); }
- void visitArrayGet(ArrayGet* curr) { curr->finalize(); }
- void visitArraySet(ArraySet* curr) { curr->finalize(); }
- void visitArrayLen(ArrayLen* curr) { curr->finalize(); }
+#define DELEGATE(CLASS_TO_VISIT) \
+ void visit##CLASS_TO_VISIT(CLASS_TO_VISIT* curr) { curr->finalize(); }
+
+#include "wasm-delegations.h"
void visitExport(Export* curr) { WASM_UNREACHABLE("unimp"); }
void visitGlobal(Global* curr) { WASM_UNREACHABLE("unimp"); }