diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/passes/remove-unused-brs.txt | 41 | ||||
-rw-r--r-- | test/passes/remove-unused-brs.wast | 39 | ||||
-rw-r--r-- | test/unit.asm.js | 12 | ||||
-rw-r--r-- | test/unit.fromasm | 13 | ||||
-rw-r--r-- | test/unit.fromasm.imprecise | 13 | ||||
-rw-r--r-- | test/unit.fromasm.imprecise.no-opts | 24 | ||||
-rw-r--r-- | test/unit.fromasm.no-opts | 24 |
7 files changed, 166 insertions, 0 deletions
diff --git a/test/passes/remove-unused-brs.txt b/test/passes/remove-unused-brs.txt index a8e7f29be..c3ac71057 100644 --- a/test/passes/remove-unused-brs.txt +++ b/test/passes/remove-unused-brs.txt @@ -281,4 +281,45 @@ ) ) ) + (func $side-effects-and-order (result i32) + (local $x i32) + (block $do-once$0 + (br_if $do-once$0 + (i32.const 0) + (call $b13) + ) + (i32.const 1) + ) + (block $do-once$0 + (if + (call $b13) + (br $do-once$0 + (call $b14) + ) + ) + (i32.const 1) + ) + (block $do-once$0 + (if + (i32.const 0) + (br $do-once$0 + (call $b14) + ) + ) + (i32.const 1) + ) + (block $do-once$0 + (if + (set_local $x + (i32.const 1) + ) + (br $do-once$0 + (set_local $x + (i32.const 2) + ) + ) + ) + (i32.const 1) + ) + ) ) diff --git a/test/passes/remove-unused-brs.wast b/test/passes/remove-unused-brs.wast index 8b9d42bc1..b7dc1cc25 100644 --- a/test/passes/remove-unused-brs.wast +++ b/test/passes/remove-unused-brs.wast @@ -297,5 +297,44 @@ ) ) ) + (func $side-effects-and-order (result i32) + (local $x i32) + (block $do-once$0 + (if + (call $b13) + (br $do-once$0 + (i32.const 0) + ) + ) + (i32.const 1) + ) + (block $do-once$0 + (if + (call $b13) + (br $do-once$0 + (call $b14) + ) + ) + (i32.const 1) + ) + (block $do-once$0 + (if + (i32.const 0) + (br $do-once$0 + (call $b14) + ) + ) + (i32.const 1) + ) + (block $do-once$0 + (if + (set_local $x (i32.const 1)) + (br $do-once$0 + (set_local $x (i32.const 2)) + ) + ) + (i32.const 1) + ) + ) ) diff --git a/test/unit.asm.js b/test/unit.asm.js index 2f307e085..b0e4e7594 100644 --- a/test/unit.asm.js +++ b/test/unit.asm.js @@ -247,6 +247,18 @@ function asm(global, env, buffer) { } } + function phi() { + var x = 0; + do { + if (lb(1) | 0) { + x = 0; + break; + } + x = 1; + } while (0); + return x | 0; + } + function z() { } function w() { diff --git a/test/unit.fromasm b/test/unit.fromasm index 3fb76981d..54b790edf 100644 --- a/test/unit.fromasm +++ b/test/unit.fromasm @@ -453,4 +453,17 @@ ) ) ) + (func $phi (result i32) + (block $do-once$0 + (if + (call $lb + (i32.const 1) + ) + (br $do-once$0 + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) ) diff --git a/test/unit.fromasm.imprecise b/test/unit.fromasm.imprecise index a4716941d..b7b25e9b8 100644 --- a/test/unit.fromasm.imprecise +++ b/test/unit.fromasm.imprecise @@ -445,4 +445,17 @@ ) ) ) + (func $phi (result i32) + (block $do-once$0 + (if + (call $lb + (i32.const 1) + ) + (br $do-once$0 + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) ) diff --git a/test/unit.fromasm.imprecise.no-opts b/test/unit.fromasm.imprecise.no-opts index c3da01359..9f49824f3 100644 --- a/test/unit.fromasm.imprecise.no-opts +++ b/test/unit.fromasm.imprecise.no-opts @@ -721,6 +721,30 @@ ) ) ) + (func $phi (result i32) + (local $x i32) + (block $do-once$0 + (block + (if + (call $lb + (i32.const 1) + ) + (block + (set_local $x + (i32.const 0) + ) + (br $do-once$0) + ) + ) + (set_local $x + (i32.const 1) + ) + ) + ) + (return + (get_local $x) + ) + ) (func $z (nop) ) diff --git a/test/unit.fromasm.no-opts b/test/unit.fromasm.no-opts index 92d2d2add..ccf89c5b6 100644 --- a/test/unit.fromasm.no-opts +++ b/test/unit.fromasm.no-opts @@ -725,6 +725,30 @@ ) ) ) + (func $phi (result i32) + (local $x i32) + (block $do-once$0 + (block + (if + (call $lb + (i32.const 1) + ) + (block + (set_local $x + (i32.const 0) + ) + (br $do-once$0) + ) + ) + (set_local $x + (i32.const 1) + ) + ) + ) + (return + (get_local $x) + ) + ) (func $z (nop) ) |