diff options
author | Alon Zakai <azakai@google.com> | 2024-10-04 11:27:59 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-04 11:27:59 -0700 |
commit | 0be8d5e07e5f893705bc36c5d09676ee65d3466f (patch) | |
tree | 04228cdc0ecfce29a7d783a8c66809235629cfe7 /src | |
parent | cbad8ec02680710001ebdc7157e487c54e9b4c66 (diff) | |
download | binaryen-0be8d5e07e5f893705bc36c5d09676ee65d3466f.tar.gz binaryen-0be8d5e07e5f893705bc36c5d09676ee65d3466f.tar.bz2 binaryen-0be8d5e07e5f893705bc36c5d09676ee65d3466f.zip |
MergeBlocks: Optimize all dropped blocks (#6984)
Just call optimizeDroppedBlock from visitDrop to handle that.
Followup to #6982. This optimizes the new testcase added there. Some older
tests also improve.
Diffstat (limited to 'src')
-rw-r--r-- | src/passes/MergeBlocks.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/passes/MergeBlocks.cpp b/src/passes/MergeBlocks.cpp index 401d2e629..12f67329d 100644 --- a/src/passes/MergeBlocks.cpp +++ b/src/passes/MergeBlocks.cpp @@ -434,6 +434,15 @@ struct MergeBlocks optimizeBlock(curr, getModule(), getPassOptions(), branchInfo); } + void visitDrop(Drop* curr) { + if (auto* block = curr->value->dynCast<Block>()) { + if (optimizeDroppedBlock( + curr, block, *getModule(), getPassOptions(), branchInfo)) { + replaceCurrent(block); + } + } + } + // given // (curr // (block=child |