summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/passes/pass.cpp2
-rw-r--r--test/passes/O1.txt14
-rw-r--r--test/passes/O1.wast19
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)
+ )
+ )
+ )
+)
+
+