diff options
-rw-r--r-- | src/passes/OptimizeInstructions.cpp | 12 | ||||
-rw-r--r-- | test/passes/optimize-instructions_all-features.txt | 6 | ||||
-rw-r--r-- | test/passes/optimize-instructions_all-features.wast | 2 |
3 files changed, 7 insertions, 13 deletions
diff --git a/src/passes/OptimizeInstructions.cpp b/src/passes/OptimizeInstructions.cpp index b7bbebf89..78cdc4718 100644 --- a/src/passes/OptimizeInstructions.cpp +++ b/src/passes/OptimizeInstructions.cpp @@ -1399,16 +1399,6 @@ private: } Expression* optimizeMemoryCopy(MemoryCopy* memCopy) { - FeatureSet features = getModule()->features; - - // memory.copy(x, x, sz) ==> nop - if (!EffectAnalyzer(getPassOptions(), features, memCopy->dest) - .hasSideEffects() && - !EffectAnalyzer(getPassOptions(), features, memCopy->size) - .hasSideEffects() && - ExpressionAnalyzer::equal(memCopy->dest, memCopy->source)) { - return ExpressionManipulator::nop(memCopy); - } // memory.copy(dst, src, C) ==> store(dst, load(src)) if (auto* csize = memCopy->size->dynCast<Const>()) { auto bytes = csize->value.geti32(); @@ -1444,7 +1434,7 @@ private: if (getPassOptions().shrinkLevel == 0) { // This adds an extra 2 bytes so apply it only for // minimal shrink level - if (features.hasSIMD()) { + if (getModule()->features.hasSIMD()) { return builder.makeStore( bytes, // bytes 0, // offset diff --git a/test/passes/optimize-instructions_all-features.txt b/test/passes/optimize-instructions_all-features.txt index 509a7825d..e865fd9f8 100644 --- a/test/passes/optimize-instructions_all-features.txt +++ b/test/passes/optimize-instructions_all-features.txt @@ -3729,7 +3729,11 @@ ) ) (func $optimize-bulk-memory-copy (param $dst i32) (param $src i32) (param $sz i32) - (nop) + (memory.copy + (local.get $dst) + (local.get $dst) + (local.get $sz) + ) (block (drop (local.get $dst) diff --git a/test/passes/optimize-instructions_all-features.wast b/test/passes/optimize-instructions_all-features.wast index 7a37b366c..9a560fc91 100644 --- a/test/passes/optimize-instructions_all-features.wast +++ b/test/passes/optimize-instructions_all-features.wast @@ -4234,7 +4234,7 @@ )) ) (func $optimize-bulk-memory-copy (param $dst i32) (param $src i32) (param $sz i32) - (memory.copy ;; nop + (memory.copy ;; skip (local.get $dst) (local.get $dst) (local.get $sz) |