diff options
-rw-r--r-- | src/passes/RedundantSetElimination.cpp | 8 | ||||
-rw-r--r-- | test/lit/passes/inlining-optimizing_optimize-level=3.wast | 3 |
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: ) |