summaryrefslogtreecommitdiff
path: root/src/passes/DeadCodeElimination.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/passes/DeadCodeElimination.cpp')
-rw-r--r--src/passes/DeadCodeElimination.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/passes/DeadCodeElimination.cpp b/src/passes/DeadCodeElimination.cpp
index 61d16afc0..f913c5a93 100644
--- a/src/passes/DeadCodeElimination.cpp
+++ b/src/passes/DeadCodeElimination.cpp
@@ -144,6 +144,14 @@ struct DeadCodeElimination
reachable = false;
}
+ void visitBrOnExn(BrOnExn* curr) {
+ if (isDead(curr->exnref)) {
+ replaceCurrent(curr->exnref);
+ return;
+ }
+ addBreak(curr->name);
+ }
+
void visitReturn(Return* curr) {
if (isDead(curr->value)) {
replaceCurrent(curr->value);
@@ -312,6 +320,14 @@ struct DeadCodeElimination
DELEGATE(Push);
case Expression::Id::PopId:
DELEGATE(Pop);
+ case Expression::Id::TryId:
+ DELEGATE(Try);
+ case Expression::Id::ThrowId:
+ DELEGATE(Throw);
+ case Expression::Id::RethrowId:
+ DELEGATE(Rethrow);
+ case Expression::Id::BrOnExnId:
+ DELEGATE(BrOnExn);
case Expression::Id::InvalidId:
WASM_UNREACHABLE();
case Expression::Id::NumExpressionIds: