diff options
Diffstat (limited to 'src/passes/DeadCodeElimination.cpp')
-rw-r--r-- | src/passes/DeadCodeElimination.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/passes/DeadCodeElimination.cpp b/src/passes/DeadCodeElimination.cpp index ebeeca364..400252e8f 100644 --- a/src/passes/DeadCodeElimination.cpp +++ b/src/passes/DeadCodeElimination.cpp @@ -148,14 +148,6 @@ 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); @@ -259,6 +251,18 @@ struct DeadCodeElimination typeUpdater.maybeUpdateTypeToUnreachable(curr); } + void visitThrow(Throw* curr) { reachable = false; } + + void visitRethrow(Rethrow* curr) { reachable = false; } + + void visitBrOnExn(BrOnExn* curr) { + if (isDead(curr->exnref)) { + replaceCurrent(curr->exnref); + return; + } + addBreak(curr->name); + } + static void scan(DeadCodeElimination* self, Expression** currp) { auto* curr = *currp; if (!self->reachable) { |