diff options
Diffstat (limited to 'src/passes')
-rw-r--r-- | src/passes/DeadCodeElimination.cpp | 4 | ||||
-rw-r--r-- | src/passes/Print.cpp | 48 |
2 files changed, 52 insertions, 0 deletions
diff --git a/src/passes/DeadCodeElimination.cpp b/src/passes/DeadCodeElimination.cpp index 6e70fc55d..a6b20a7ba 100644 --- a/src/passes/DeadCodeElimination.cpp +++ b/src/passes/DeadCodeElimination.cpp @@ -262,6 +262,10 @@ struct DeadCodeElimination : public WalkerPass<PostWalker<DeadCodeElimination>> case Expression::Id::SIMDShuffleId: DELEGATE(SIMDShuffle); case Expression::Id::SIMDBitselectId: DELEGATE(SIMDBitselect); case Expression::Id::SIMDShiftId: DELEGATE(SIMDShift); + case Expression::Id::MemoryInitId: DELEGATE(MemoryInit); + case Expression::Id::DataDropId: DELEGATE(DataDrop); + case Expression::Id::MemoryCopyId: DELEGATE(MemoryCopy); + case Expression::Id::MemoryFillId: DELEGATE(MemoryFill); case Expression::Id::InvalidId: WASM_UNREACHABLE(); case Expression::Id::NumExpressionIds: WASM_UNREACHABLE(); } diff --git a/src/passes/Print.cpp b/src/passes/Print.cpp index 3de8b5c01..761c9e3d4 100644 --- a/src/passes/Print.cpp +++ b/src/passes/Print.cpp @@ -293,6 +293,22 @@ struct PrintExpressionContents : public Visitor<PrintExpressionContents> { case ShrUVecI64x2: o << "i64x2.shr_u"; break; } } + void visitMemoryInit(MemoryInit* curr) { + prepareColor(o); + o << "memory.init " << curr->segment; + } + void visitDataDrop(DataDrop* curr) { + prepareColor(o); + o << "data.drop " << curr->segment; + } + void visitMemoryCopy(MemoryCopy* curr) { + prepareColor(o); + o << "memory.copy"; + } + void visitMemoryFill(MemoryFill* curr) { + prepareColor(o); + o << "memory.fill"; + } void visitConst(Const* curr) { o << curr->value; } @@ -936,6 +952,38 @@ struct PrintSExpression : public Visitor<PrintSExpression> { printFullLine(curr->shift); decIndent(); } + void visitMemoryInit(MemoryInit* curr) { + o << '('; + PrintExpressionContents(currFunction, o).visit(curr); + incIndent(); + printFullLine(curr->dest); + printFullLine(curr->offset); + printFullLine(curr->size); + decIndent(); + } + void visitDataDrop(DataDrop* curr) { + o << '('; + PrintExpressionContents(currFunction, o).visit(curr); + o << ')'; + } + void visitMemoryCopy(MemoryCopy* curr) { + o << '('; + PrintExpressionContents(currFunction, o).visit(curr); + incIndent(); + printFullLine(curr->dest); + printFullLine(curr->source); + printFullLine(curr->size); + decIndent(); + } + void visitMemoryFill(MemoryFill* curr) { + o << '('; + PrintExpressionContents(currFunction, o).visit(curr); + incIndent(); + printFullLine(curr->dest); + printFullLine(curr->value); + printFullLine(curr->size); + decIndent(); + } void visitConst(Const* curr) { o << '('; PrintExpressionContents(currFunction, o).visit(curr); |