summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/passes/RedundantSetElimination.cpp8
-rw-r--r--test/lit/passes/inlining-optimizing_optimize-level=3.wast3
2 files changed, 6 insertions, 5 deletions
diff --git a/src/passes/RedundantSetElimination.cpp b/src/passes/RedundantSetElimination.cpp
index 9a60331dd..3d21b7d71 100644
--- a/src/passes/RedundantSetElimination.cpp
+++ b/src/passes/RedundantSetElimination.cpp
@@ -298,7 +298,9 @@ struct RedundantSetElimination
auto& setps = curr->contents.setps;
for (auto** setp : setps) {
auto* set = (*setp)->cast<LocalSet>();
- currValues[set->index] = getValue(set->value, currValues);
+ auto* value = Properties::getFallthrough(
+ set->value, getPassOptions(), *getModule());
+ currValues[set->index] = getValue(value, currValues);
}
if (currValues == curr->contents.end) {
// nothing changed, so no more work to do
@@ -335,7 +337,9 @@ struct RedundantSetElimination
for (auto** setp : setps) {
auto* set = (*setp)->cast<LocalSet>();
auto oldValue = currValues[set->index];
- auto newValue = getValue(set->value, currValues);
+ auto* value = Properties::getFallthrough(
+ set->value, getPassOptions(), *getModule());
+ auto newValue = getValue(value, currValues);
auto index = set->index;
if (newValue == oldValue) {
remove(setp);
diff --git a/test/lit/passes/inlining-optimizing_optimize-level=3.wast b/test/lit/passes/inlining-optimizing_optimize-level=3.wast
index a33f3bf2e..cd9629009 100644
--- a/test/lit/passes/inlining-optimizing_optimize-level=3.wast
+++ b/test/lit/passes/inlining-optimizing_optimize-level=3.wast
@@ -4523,9 +4523,6 @@
;; CHECK-NEXT: (i32.const 32)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; CHECK-NEXT: (local.set $6
- ;; CHECK-NEXT: (local.get $1)
- ;; CHECK-NEXT: )
;; CHECK-NEXT: (local.get $9)
;; CHECK-NEXT: )
;; CHECK-NEXT: )