diff options
Diffstat (limited to 'src/passes')
-rw-r--r-- | src/passes/DeadCodeElimination.cpp | 24 | ||||
-rw-r--r-- | src/passes/Print.cpp | 104 |
2 files changed, 128 insertions, 0 deletions
diff --git a/src/passes/DeadCodeElimination.cpp b/src/passes/DeadCodeElimination.cpp index 7562645e0..067bc81e1 100644 --- a/src/passes/DeadCodeElimination.cpp +++ b/src/passes/DeadCodeElimination.cpp @@ -379,6 +379,30 @@ struct DeadCodeElimination DELEGATE(I31New); case Expression::Id::I31GetId: DELEGATE(I31Get); + case Expression::Id::RefTestId: + DELEGATE(RefTest); + case Expression::Id::RefCastId: + DELEGATE(RefCast); + case Expression::Id::BrOnCastId: + DELEGATE(BrOnCast); + case Expression::Id::RttCanonId: + DELEGATE(RttCanon); + case Expression::Id::RttSubId: + DELEGATE(RttSub); + case Expression::Id::StructNewId: + DELEGATE(StructNew); + case Expression::Id::StructGetId: + DELEGATE(StructGet); + case Expression::Id::StructSetId: + DELEGATE(StructSet); + case Expression::Id::ArrayNewId: + DELEGATE(ArrayNew); + case Expression::Id::ArrayGetId: + DELEGATE(ArrayGet); + case Expression::Id::ArraySetId: + DELEGATE(ArraySet); + case Expression::Id::ArrayLenId: + DELEGATE(ArrayLen); case Expression::Id::InvalidId: WASM_UNREACHABLE("unimp"); case Expression::Id::NumExpressionIds: diff --git a/src/passes/Print.cpp b/src/passes/Print.cpp index ac115edc3..a8e5b0f9c 100644 --- a/src/passes/Print.cpp +++ b/src/passes/Print.cpp @@ -1478,6 +1478,50 @@ struct PrintExpressionContents void visitI31Get(I31Get* curr) { printMedium(o, curr->signed_ ? "i31.get_s" : "i31.get_u"); } + void visitRefTest(RefTest* curr) { + printMedium(o, "ref.test"); + WASM_UNREACHABLE("TODO (gc): ref.test"); + } + void visitRefCast(RefCast* curr) { + printMedium(o, "ref.cast"); + WASM_UNREACHABLE("TODO (gc): ref.cast"); + } + void visitBrOnCast(BrOnCast* curr) { + printMedium(o, "br_on_cast"); + WASM_UNREACHABLE("TODO (gc): br_on_cast"); + } + void visitRttCanon(RttCanon* curr) { + printMedium(o, "rtt.canon"); + WASM_UNREACHABLE("TODO (gc): rtt.canon"); + } + void visitRttSub(RttSub* curr) { + printMedium(o, "rtt.sub"); + WASM_UNREACHABLE("TODO (gc): rtt.sub"); + } + void visitStructNew(StructNew* curr) { + WASM_UNREACHABLE("TODO (gc): struct.new"); + } + void visitStructGet(StructGet* curr) { + WASM_UNREACHABLE("TODO (gc): struct.get"); + } + void visitStructSet(StructSet* curr) { + printMedium(o, "struct.set"); + WASM_UNREACHABLE("TODO (gc): struct.set"); + } + void visitArrayNew(ArrayNew* curr) { + WASM_UNREACHABLE("TODO (gc): array.new"); + } + void visitArrayGet(ArrayGet* curr) { + WASM_UNREACHABLE("TODO (gc): array.get"); + } + void visitArraySet(ArraySet* curr) { + printMedium(o, "array.set"); + WASM_UNREACHABLE("TODO (gc): array.set"); + } + void visitArrayLen(ArrayLen* curr) { + printMedium(o, "array.len"); + WASM_UNREACHABLE("TODO (gc): array.len"); + } }; // Prints an expression in s-expr format, including both the @@ -2081,6 +2125,66 @@ struct PrintSExpression : public OverriddenVisitor<PrintSExpression> { printFullLine(curr->i31); decIndent(); } + void visitRefTest(RefTest* curr) { + o << '('; + PrintExpressionContents(currFunction, o).visit(curr); + WASM_UNREACHABLE("TODO (gc): ref.test"); + } + void visitRefCast(RefCast* curr) { + o << '('; + PrintExpressionContents(currFunction, o).visit(curr); + WASM_UNREACHABLE("TODO (gc): ref.cast"); + } + void visitBrOnCast(BrOnCast* curr) { + o << '('; + PrintExpressionContents(currFunction, o).visit(curr); + WASM_UNREACHABLE("TODO (gc): br_on_cast"); + } + void visitRttCanon(RttCanon* curr) { + o << '('; + PrintExpressionContents(currFunction, o).visit(curr); + WASM_UNREACHABLE("TODO (gc): rtt.canon"); + } + void visitRttSub(RttSub* curr) { + o << '('; + PrintExpressionContents(currFunction, o).visit(curr); + WASM_UNREACHABLE("TODO (gc): rtt.sub"); + } + void visitStructNew(StructNew* curr) { + o << '('; + PrintExpressionContents(currFunction, o).visit(curr); + WASM_UNREACHABLE("TODO (gc): struct.new"); + } + void visitStructGet(StructGet* curr) { + o << '('; + PrintExpressionContents(currFunction, o).visit(curr); + WASM_UNREACHABLE("TODO (gc): struct.get"); + } + void visitStructSet(StructSet* curr) { + o << '('; + PrintExpressionContents(currFunction, o).visit(curr); + WASM_UNREACHABLE("TODO (gc): struct.set"); + } + void visitArrayNew(ArrayNew* curr) { + o << '('; + PrintExpressionContents(currFunction, o).visit(curr); + WASM_UNREACHABLE("TODO (gc): array.new"); + } + void visitArrayGet(ArrayGet* curr) { + o << '('; + PrintExpressionContents(currFunction, o).visit(curr); + WASM_UNREACHABLE("TODO (gc): array.get"); + } + void visitArraySet(ArraySet* curr) { + o << '('; + PrintExpressionContents(currFunction, o).visit(curr); + WASM_UNREACHABLE("TODO (gc): array.set"); + } + void visitArrayLen(ArrayLen* curr) { + o << '('; + PrintExpressionContents(currFunction, o).visit(curr); + WASM_UNREACHABLE("TODO (gc): array.len"); + } // Module-level visitors void handleSignature(Signature curr, Name* funcName = nullptr) { o << "(func"; |