summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/passes/SimplifyLocals.cpp2
-rw-r--r--test/passes/simplify-locals-nostructure.txt6
-rw-r--r--test/passes/simplify-locals-nostructure.wast8
3 files changed, 16 insertions, 0 deletions
diff --git a/src/passes/SimplifyLocals.cpp b/src/passes/SimplifyLocals.cpp
index a9e9de34b..4c896dbba 100644
--- a/src/passes/SimplifyLocals.cpp
+++ b/src/passes/SimplifyLocals.cpp
@@ -64,6 +64,7 @@ struct SetLocalRemover : public PostWalker<SetLocalRemover> {
} else {
Drop* drop = ExpressionManipulator::convert<SetLocal, Drop>(curr);
drop->value = value;
+ drop->finalize();
}
}
}
@@ -268,6 +269,7 @@ struct SimplifyLocals : public WalkerPass<LinearExecutionWalker<SimplifyLocals>>
auto* previousValue = previous->value;
Drop* drop = ExpressionManipulator::convert<SetLocal, Drop>(previous);
drop->value = previousValue;
+ drop->finalize();
self->sinkables.erase(found);
self->anotherCycle = true;
}
diff --git a/test/passes/simplify-locals-nostructure.txt b/test/passes/simplify-locals-nostructure.txt
index 2502c4549..6857a4c7a 100644
--- a/test/passes/simplify-locals-nostructure.txt
+++ b/test/passes/simplify-locals-nostructure.txt
@@ -62,4 +62,10 @@
(get_local $b)
)
)
+ (func $no-unreachable (type $0)
+ (local $x i32)
+ (drop
+ (unreachable)
+ )
+ )
)
diff --git a/test/passes/simplify-locals-nostructure.wast b/test/passes/simplify-locals-nostructure.wast
index 33f891e61..548109237 100644
--- a/test/passes/simplify-locals-nostructure.wast
+++ b/test/passes/simplify-locals-nostructure.wast
@@ -28,5 +28,13 @@
)
(drop (get_local $b))
)
+ (func $no-unreachable
+ (local $x i32)
+ (drop
+ (tee_local $x
+ (unreachable)
+ )
+ )
+ )
)