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.cpp10
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