diff options
-rw-r--r-- | src/passes/pass.cpp | 2 | ||||
-rw-r--r-- | test/passes/O1.txt | 14 | ||||
-rw-r--r-- | test/passes/O1.wast | 19 |
3 files changed, 34 insertions, 1 deletions
diff --git a/src/passes/pass.cpp b/src/passes/pass.cpp index 5d8b8d2c8..7f8e09bbf 100644 --- a/src/passes/pass.cpp +++ b/src/passes/pass.cpp @@ -204,13 +204,13 @@ void PassRunner::addDefaultFunctionOptimizationPasses() { add("remove-unused-brs"); // coalesce-locals opens opportunities add("remove-unused-names"); // remove-unused-brs opens opportunities add("merge-blocks"); // clean up remove-unused-brs new blocks - add("optimize-instructions"); // late propagation if (options.optimizeLevel >= 3 || options.shrinkLevel >= 2) { add("precompute-propagate"); } else { add("precompute"); } + add("optimize-instructions"); if (options.optimizeLevel >= 2 || options.shrinkLevel >= 1) { add("rse"); // after all coalesce-locals, and before a final vacuum } diff --git a/test/passes/O1.txt b/test/passes/O1.txt new file mode 100644 index 000000000..09dd3d056 --- /dev/null +++ b/test/passes/O1.txt @@ -0,0 +1,14 @@ +(module + (type $0 (func (result i32))) + (memory $0 1 1) + (global $global$0 (mut i32) (i32.const 10)) + (export "foo" (func $0)) + (func $0 (; 0 ;) (type $0) (result i32) + (global.set $global$0 + (i32.const 0) + ) + (i32.load align=1 + (i32.const 4) + ) + ) +) diff --git a/test/passes/O1.wast b/test/passes/O1.wast new file mode 100644 index 000000000..87b06b063 --- /dev/null +++ b/test/passes/O1.wast @@ -0,0 +1,19 @@ +(module + (memory $0 1 1) + (global $global$0 (mut i32) (i32.const 10)) + (func "foo" (result i32) + (i32.load offset=4 align=1 + (i32.and + (block $label$1 (result i32) + (global.set $global$0 + (i32.const 0) + ) + (i32.const -64) + ) + (i32.const 15) + ) + ) + ) +) + + |