diff options
Diffstat (limited to 'src/passes/DeadCodeElimination.cpp')
-rw-r--r-- | src/passes/DeadCodeElimination.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/passes/DeadCodeElimination.cpp b/src/passes/DeadCodeElimination.cpp index 6e6f2c2b9..61d16afc0 100644 --- a/src/passes/DeadCodeElimination.cpp +++ b/src/passes/DeadCodeElimination.cpp @@ -365,7 +365,12 @@ struct DeadCodeElimination return curr; } - void visitCall(Call* curr) { handleCall(curr); } + void visitCall(Call* curr) { + handleCall(curr); + if (curr->isReturn) { + reachable = false; + } + } void visitCallIndirect(CallIndirect* curr) { if (handleCall(curr) != curr) { @@ -380,6 +385,9 @@ struct DeadCodeElimination block->finalize(curr->type); replaceCurrent(block); } + if (curr->isReturn) { + reachable = false; + } } // Append the reachable operands of the current node to a block, and replace |