diff options
Diffstat (limited to 'test/lit/passes/flatten_simplify-locals-nonesting_souperify-single-use_enable-threads.wast')
-rw-r--r-- | test/lit/passes/flatten_simplify-locals-nonesting_souperify-single-use_enable-threads.wast | 882 |
1 files changed, 525 insertions, 357 deletions
diff --git a/test/lit/passes/flatten_simplify-locals-nonesting_souperify-single-use_enable-threads.wast b/test/lit/passes/flatten_simplify-locals-nonesting_souperify-single-use_enable-threads.wast index ea693d502..76b4e6e51 100644 --- a/test/lit/passes/flatten_simplify-locals-nonesting_souperify-single-use_enable-threads.wast +++ b/test/lit/passes/flatten_simplify-locals-nonesting_souperify-single-use_enable-threads.wast @@ -143,7 +143,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $8) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (block ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -180,7 +180,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (else ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) @@ -197,28 +197,32 @@ (local.get $x) (local.get $y) ) - (block - (local.set $i - (i64.eq - (local.get $a) - (local.get $x) + (then + (block + (local.set $i + (i64.eq + (local.get $a) + (local.get $x) + ) ) - ) - (local.set $j - (i64.ne - (local.get $a) - (local.get $y) + (local.set $j + (i64.ne + (local.get $a) + (local.get $y) + ) ) - ) - (local.set $r - (i32.and - (local.get $i) - (local.get $j) + (local.set $r + (i32.and + (local.get $i) + (local.get $j) + ) ) + (return (local.get $r)) ) - (return (local.get $r)) ) - (unreachable) + (else + (unreachable) + ) ) ) ;; Figure 3, simplified to an if @@ -244,7 +248,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $2) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (local.set $x @@ -254,7 +258,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (else ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (local.set $x @@ -289,16 +293,20 @@ (local.get $x) (i32.const 1) ) - (local.set $x - (i32.add - (local.get $x) - (i32.const 1) + (then + (local.set $x + (i32.add + (local.get $x) + (i32.const 1) + ) ) ) - (local.set $x - (i32.add - (local.get $x) - (i32.const 2) + (else + (local.set $x + (i32.add + (local.get $x) + (i32.const 2) + ) ) ) ) @@ -377,7 +385,7 @@ ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $x) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (local.set $x @@ -392,10 +400,12 @@ (func $various-conditions-1 (param $x i32) (if (local.get $x) - (local.set $x - (i32.add - (local.get $x) - (i32.const 1) + (then + (local.set $x + (i32.add + (local.get $x) + (i32.const 1) + ) ) ) ) @@ -414,7 +424,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $2) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (local.set $x @@ -432,10 +442,12 @@ (local.get $x) (i32.const 0) ) - (local.set $x - (i32.sub - (local.get $x) - (i32.const 2) + (then + (local.set $x + (i32.sub + (local.get $x) + (i32.const 2) + ) ) ) ) @@ -451,7 +463,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $1) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (local.set $x @@ -466,10 +478,12 @@ (func $various-conditions-3 (param $x i32) (if (i32.reinterpret_f32 (f32.const 0)) - (local.set $x - (i32.sub - (local.get $x) - (i32.const 4) + (then + (local.set $x + (i32.sub + (local.get $x) + (i32.const 4) + ) ) ) ) @@ -481,7 +495,7 @@ ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (unreachable) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (local.set $x @@ -498,10 +512,12 @@ (func $various-conditions-4 (param $x i32) (if (unreachable) - (local.set $x - (i32.add - (local.get $x) - (i32.const 3) + (then + (local.set $x + (i32.add + (local.get $x) + (i32.const 3) + ) ) ) ) @@ -525,7 +541,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $3) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (local.set $5 ;; CHECK-NEXT: (i32.ctz @@ -565,18 +581,20 @@ (i32.eqz (local.get $x) ) - (local.set $x - (i32.add - (i32.ctz - (local.get $y) - ) - (i32.sub - (i32.clz - (local.get $x) - ) - (i32.popcnt + (then + (local.set $x + (i32.add + (i32.ctz (local.get $y) ) + (i32.sub + (i32.clz + (local.get $x) + ) + (i32.popcnt + (local.get $y) + ) + ) ) ) ) @@ -602,7 +620,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $3) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (local.set $x @@ -622,10 +640,12 @@ (i32.const 1) ) ) - (local.set $x - (i32.add - (local.get $x) - (i32.const 2) + (then + (local.set $x + (i32.add + (local.get $x) + (i32.const 2) + ) ) ) ) @@ -650,7 +670,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $3) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (local.set $x @@ -670,10 +690,12 @@ (i32.const 1) ) ) - (local.set $x - (i32.add - (local.get $x) - (i32.const 2) + (then + (local.set $x + (i32.add + (local.get $x) + (i32.const 2) + ) ) ) ) @@ -700,7 +722,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $2) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (local.set $x @@ -710,7 +732,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (else ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (local.set $x @@ -745,16 +767,20 @@ (local.get $x) (i32.const 1) ) - (local.set $x - (i32.add - (local.get $x) - (i32.const 1) + (then + (local.set $x + (i32.add + (local.get $x) + (i32.const 1) + ) ) ) - (local.set $x - (i32.add - (local.get $x) - (i32.const 2) + (else + (local.set $x + (i32.add + (local.get $x) + (i32.const 2) + ) ) ) ) @@ -818,7 +844,7 @@ ;; CHECK-NEXT: (block ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 1) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (local.set $1 ;; CHECK-NEXT: (i32.load @@ -826,18 +852,24 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $1 - ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: (else + ;; CHECK-NEXT: (local.set $1 + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $1) - ;; CHECK-NEXT: (local.set $3 - ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: (then + ;; CHECK-NEXT: (local.set $3 + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $3 - ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: (else + ;; CHECK-NEXT: (local.set $3 + ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -850,13 +882,21 @@ (if (result i32) (if (result i32) (i32.const 1) - (i32.load + (then + (i32.load + (i32.const 0) + ) + ) + (else (i32.const 0) ) + ) + (then (i32.const 0) ) - (i32.const 0) - (i32.const 1) + (else + (i32.const 1) + ) ) ) ;; CHECK: (func $bad-phi-value-2 (param $x i32) (result i32) @@ -870,7 +910,7 @@ ;; CHECK-NEXT: (block ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 1) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (local.set $2 ;; CHECK-NEXT: (i32.load @@ -878,18 +918,24 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $2 - ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: (else + ;; CHECK-NEXT: (local.set $2 + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $2) - ;; CHECK-NEXT: (local.set $x - ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: (then + ;; CHECK-NEXT: (local.set $x + ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $x - ;; CHECK-NEXT: (i32.const 2) + ;; CHECK-NEXT: (else + ;; CHECK-NEXT: (local.set $x + ;; CHECK-NEXT: (i32.const 2) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -905,13 +951,21 @@ (if (if (result i32) (i32.const 1) - (i32.load + (then + (i32.load + (i32.const 0) + ) + ) + (else (i32.const 0) ) - (i32.const 0) ) - (local.set $x (i32.const 1)) - (local.set $x (i32.const 2)) + (then + (local.set $x (i32.const 1)) + ) + (else + (local.set $x (i32.const 2)) + ) ) (local.get $x) ) @@ -1123,8 +1177,10 @@ ;; CHECK-NEXT: (block ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 0) - ;; CHECK-NEXT: (local.set $x - ;; CHECK-NEXT: (f64.const 1) + ;; CHECK-NEXT: (then + ;; CHECK-NEXT: (local.set $x + ;; CHECK-NEXT: (f64.const 1) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (nop) @@ -1139,8 +1195,10 @@ (local $x f64) (if (i32.const 0) - (local.set $x - (f64.const 1) + (then + (local.set $x + (f64.const 1) + ) ) ) (local.get $x) @@ -1153,11 +1211,15 @@ ;; CHECK-NEXT: (block $label$1 ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 0) - ;; CHECK-NEXT: (local.set $0 - ;; CHECK-NEXT: (f64.const 0) + ;; CHECK-NEXT: (then + ;; CHECK-NEXT: (local.set $0 + ;; CHECK-NEXT: (f64.const 0) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $0 - ;; CHECK-NEXT: (f64.const 1) + ;; CHECK-NEXT: (else + ;; CHECK-NEXT: (local.set $0 + ;; CHECK-NEXT: (f64.const 1) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (nop) @@ -1172,8 +1234,12 @@ (block $label$1 (result f64) (if (result f64) (i32.const 0) - (f64.const 0) - (f64.const 1) + (then + (f64.const 0) + ) + (else + (f64.const 1) + ) ) ) ) @@ -1203,7 +1269,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -1214,7 +1280,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (else ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -1242,16 +1308,20 @@ (local.get $x) (local.get $y) ) - (local.set $i - (i32.eq - (local.get $x) - (local.get $y) + (then + (local.set $i + (i32.eq + (local.get $x) + (local.get $y) + ) ) ) - (local.set $i - (i32.add - (local.get $x) - (local.get $y) + (else + (local.set $i + (i32.add + (local.get $x) + (local.get $y) + ) ) ) ) @@ -1321,7 +1391,7 @@ ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $x) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (block ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (i32.const 1) @@ -1334,8 +1404,10 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $x - ;; CHECK-NEXT: (i32.const 2) + ;; CHECK-NEXT: (else + ;; CHECK-NEXT: (local.set $x + ;; CHECK-NEXT: (i32.const 2) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -1353,14 +1425,18 @@ (func $in-unreachable-1 (param $x i32) (param $y i32) (result i32) (if (local.get $x) - (block - (local.set $x - (i32.const 1) + (then + (block + (local.set $x + (i32.const 1) + ) + (return (local.get $x)) ) - (return (local.get $x)) ) - (local.set $x - (i32.const 2) + (else + (local.set $x + (i32.const 2) + ) ) ) ;; no phi here! @@ -1378,7 +1454,7 @@ ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $x) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (block ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (i32.const 1) @@ -1388,8 +1464,10 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $x - ;; CHECK-NEXT: (i32.const 2) + ;; CHECK-NEXT: (else + ;; CHECK-NEXT: (local.set $x + ;; CHECK-NEXT: (i32.const 2) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -1407,14 +1485,18 @@ (func $in-unreachable-2 (param $x i32) (param $y i32) (result i32) (if (local.get $x) - (block - (local.set $x - (i32.const 1) + (then + (block + (local.set $x + (i32.const 1) + ) + (unreachable) ) - (unreachable) ) - (local.set $x - (i32.const 2) + (else + (local.set $x + (i32.const 2) + ) ) ) ;; no phi here! @@ -1434,7 +1516,7 @@ ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $x) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (block ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (i32.const 1) @@ -1444,8 +1526,10 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $x - ;; CHECK-NEXT: (i32.const 2) + ;; CHECK-NEXT: (else + ;; CHECK-NEXT: (local.set $x + ;; CHECK-NEXT: (i32.const 2) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -1470,14 +1554,18 @@ (block $out (if (local.get $x) - (block - (local.set $x - (i32.const 1) + (then + (block + (local.set $x + (i32.const 1) + ) + (br $out) ) - (br $out) ) - (local.set $x - (i32.const 2) + (else + (local.set $x + (i32.const 2) + ) ) ) ;; no phi here! @@ -1501,7 +1589,7 @@ ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $x) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (block ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (i32.const 1) @@ -1513,8 +1601,10 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $x - ;; CHECK-NEXT: (i32.const 2) + ;; CHECK-NEXT: (else + ;; CHECK-NEXT: (local.set $x + ;; CHECK-NEXT: (i32.const 2) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -1539,14 +1629,18 @@ (block $out (if (local.get $x) - (block - (local.set $x - (i32.const 1) + (then + (block + (local.set $x + (i32.const 1) + ) + (br_table $out $out $out (i32.const 1)) ) - (br_table $out $out $out (i32.const 1)) ) - (local.set $x - (i32.const 2) + (else + (local.set $x + (i32.const 2) + ) ) ) ;; no phi here! @@ -1571,7 +1665,7 @@ ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $x) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) @@ -1580,8 +1674,10 @@ ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $x - ;; CHECK-NEXT: (i32.const 2) + ;; CHECK-NEXT: (else + ;; CHECK-NEXT: (local.set $x + ;; CHECK-NEXT: (i32.const 2) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -1606,16 +1702,20 @@ (block $out (if (local.get $x) - (block - (local.set $x - (i32.const 1) - ) - (br_if $out - (local.get $x) + (then + (block + (local.set $x + (i32.const 1) + ) + (br_if $out + (local.get $x) + ) ) ) - (local.set $x - (i32.const 2) + (else + (local.set $x + (i32.const 2) + ) ) ) ;; there *IS* a phi here since it was a br_if @@ -1639,12 +1739,12 @@ ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $2) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (block ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (block ;; CHECK-NEXT: (local.set $1 ;; CHECK-NEXT: (i32.const -8531) @@ -1654,7 +1754,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (else ;; CHECK-NEXT: (block ;; CHECK-NEXT: (local.set $1 ;; CHECK-NEXT: (i32.const -8531) @@ -1703,19 +1803,25 @@ (block $label$3 (if (local.get $2) - (if - (local.get $0) - (block - (local.set $1 - (i32.const -8531) + (then + (if + (local.get $0) + (then + (block + (local.set $1 + (i32.const -8531) + ) + (br $label$3) + ) ) - (br $label$3) - ) - (block - (local.set $1 - (i32.const -8531) + (else + (block + (local.set $1 + (i32.const -8531) + ) + (br $label$1) + ) ) - (br $label$1) ) ) ) @@ -1749,11 +1855,15 @@ ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $x) - ;; CHECK-NEXT: (local.set $x - ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: (then + ;; CHECK-NEXT: (local.set $x + ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $x - ;; CHECK-NEXT: (i32.const 2) + ;; CHECK-NEXT: (else + ;; CHECK-NEXT: (local.set $x + ;; CHECK-NEXT: (i32.const 2) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -1770,11 +1880,15 @@ (unreachable) (if (local.get $x) - (local.set $x - (i32.const 1) + (then + (local.set $x + (i32.const 1) + ) ) - (local.set $x - (i32.const 2) + (else + (local.set $x + (i32.const 2) + ) ) ) (return @@ -2215,7 +2329,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (local.set $7 ;; CHECK-NEXT: (i64.eqz @@ -2224,7 +2338,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $7) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -2235,7 +2349,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (else ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -2248,7 +2362,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (else ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (local.set $15 ;; CHECK-NEXT: (i64.eqz @@ -2257,7 +2371,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $15) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -2268,7 +2382,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (else ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -2300,37 +2414,49 @@ (local.get $x) (local.get $y) ) - (if - (i64.eqz - (local.get $x) - ) - (local.set $t - (i64.add + (then + (if + (i64.eqz (local.get $x) - (local.get $y) ) - ) - (local.set $t - (i64.sub - (local.get $x) - (local.get $y) + (then + (local.set $t + (i64.add + (local.get $x) + (local.get $y) + ) + ) + ) + (else + (local.set $t + (i64.sub + (local.get $x) + (local.get $y) + ) + ) ) ) ) - (if - (i64.eqz - (local.get $y) - ) - (local.set $t - (i64.mul - (local.get $x) + (else + (if + (i64.eqz (local.get $y) ) - ) - (local.set $t - (i64.div_s - (local.get $x) - (local.get $y) + (then + (local.set $t + (i64.mul + (local.get $x) + (local.get $y) + ) + ) + ) + (else + (local.set $t + (i64.div_s + (local.get $x) + (local.get $y) + ) + ) ) ) ) @@ -3376,14 +3502,14 @@ ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $var$2) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (loop $label$2 ;; CHECK-NEXT: (block ;; CHECK-NEXT: (block ;; CHECK-NEXT: (block $label$3 ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 0) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) @@ -3396,7 +3522,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $6) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) @@ -3423,23 +3549,29 @@ (func $bad-phi-type (param $var$0 i64) (param $var$1 i64) (param $var$2 i32) (param $var$3 f32) (if (local.get $var$2) - (drop - (loop $label$2 (result f64) - (if - (block $label$3 (result i32) - (if + (then + (drop + (loop $label$2 (result f64) + (if + (block $label$3 (result i32) + (if + (i32.const 0) + (then + (unreachable) + ) + ) + (nop) (i32.const 0) + ) + (then (unreachable) ) - (nop) - (i32.const 0) ) - (unreachable) - ) - (br_if $label$2 - (local.get $var$2) + (br_if $label$2 + (local.get $var$2) + ) + (f64.const 0) ) - (f64.const 0) ) ) ) @@ -3466,7 +3598,7 @@ ;; CHECK-NEXT: (block $label$4 ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 1337) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) @@ -3532,7 +3664,9 @@ (block $label$4 (result i32) (if (i32.const 1337) - (unreachable) + (then + (unreachable) + ) ) (local.get $var$0) ) @@ -3594,11 +3728,11 @@ ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $var$0) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (else ;; CHECK-NEXT: (block ;; CHECK-NEXT: (block ;; CHECK-NEXT: (loop $label$3 @@ -3624,7 +3758,9 @@ ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $6) - ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: (then + ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (nop) @@ -3658,22 +3794,28 @@ (i32.const 0) ) ) - (unreachable) - (block (result f32) - (if - (loop $label$3 (result i32) - (block $label$4 (result i32) - (i32.clz - (br_if $label$4 - (local.get $var$0) - (i32.const 1) + (then + (unreachable) + ) + (else + (block (result f32) + (if + (loop $label$3 (result i32) + (block $label$4 (result i32) + (i32.clz + (br_if $label$4 + (local.get $var$0) + (i32.const 1) + ) ) ) ) + (then + (nop) + ) ) - (nop) + (f32.const 1) ) - (f32.const 1) ) ) ) @@ -3852,54 +3994,56 @@ ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $var$0) - ;; CHECK-NEXT: (block $label$2 - ;; CHECK-NEXT: (block $label$3 - ;; CHECK-NEXT: (nop) - ;; CHECK-NEXT: (local.set $var$1 - ;; CHECK-NEXT: (local.get $var$0) + ;; CHECK-NEXT: (then + ;; CHECK-NEXT: (block $label$2 + ;; CHECK-NEXT: (block $label$3 + ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: (local.set $var$1 + ;; CHECK-NEXT: (local.get $var$0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: (local.set $8 + ;; CHECK-NEXT: (i32.const 12) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (br_if $label$3 + ;; CHECK-NEXT: (local.get $8) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (unreachable) + ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (nop) - ;; CHECK-NEXT: (local.set $8 - ;; CHECK-NEXT: (i32.const 12) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (br_if $label$3 - ;; CHECK-NEXT: (local.get $8) + ;; CHECK-NEXT: (local.set $10 + ;; CHECK-NEXT: (i32.eqz + ;; CHECK-NEXT: (local.get $var$1) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (unreachable) - ;; CHECK-NEXT: (unreachable) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (nop) - ;; CHECK-NEXT: (local.set $10 - ;; CHECK-NEXT: (i32.eqz - ;; CHECK-NEXT: (local.get $var$1) + ;; CHECK-NEXT: (br_if $label$2 + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (br_if $label$2 - ;; CHECK-NEXT: (local.get $10) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (block - ;; CHECK-NEXT: (local.set $11 - ;; CHECK-NEXT: (i32.load - ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (local.set $11 + ;; CHECK-NEXT: (i32.load + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (nop) - ;; CHECK-NEXT: (local.set $13 - ;; CHECK-NEXT: (i32.ne - ;; CHECK-NEXT: (local.get $11) - ;; CHECK-NEXT: (local.get $var$0) + ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: (local.set $13 + ;; CHECK-NEXT: (i32.ne + ;; CHECK-NEXT: (local.get $11) + ;; CHECK-NEXT: (local.get $var$0) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (local.get $13) - ;; CHECK-NEXT: (block - ;; CHECK-NEXT: (unreachable) - ;; CHECK-NEXT: (unreachable) + ;; CHECK-NEXT: (if + ;; CHECK-NEXT: (local.get $13) + ;; CHECK-NEXT: (then + ;; CHECK-NEXT: (unreachable) + ;; CHECK-NEXT: (unreachable) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (unreachable) + ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (unreachable) - ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -3914,33 +4058,37 @@ (i32.const -7) ) ) - (block $label$2 - (block $label$3 - (local.set $var$1 - (local.get $var$0) - ) - (br_if $label$3 - (local.tee $var$3 - (i32.const 12) + (then + (block $label$2 + (block $label$3 + (local.set $var$1 + (local.get $var$0) ) + (br_if $label$3 + (local.tee $var$3 + (i32.const 12) + ) + ) + (unreachable) ) - (unreachable) - ) - (br_if $label$2 - (i32.eqz - (local.get $var$1) + (br_if $label$2 + (i32.eqz + (local.get $var$1) + ) ) - ) - (if - (i32.ne - (i32.load - (i32.const 0) + (if + (i32.ne + (i32.load + (i32.const 0) + ) + (local.get $var$0) + ) + (then + (unreachable) ) - (local.get $var$0) ) (unreachable) ) - (unreachable) ) ) ) @@ -4164,7 +4312,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $8) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) @@ -4189,7 +4337,9 @@ ) ) ) - (unreachable) + (then + (unreachable) + ) ) ) ;; CHECK: (func $zext-numGets-hasAnotherUse (param $var$0 i32) (param $var$1 i32) @@ -4247,7 +4397,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $11) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) @@ -4279,7 +4429,9 @@ (local.get $temp) ) ) - (unreachable) + (then + (unreachable) + ) ) ) ;; CHECK: (func $flipped-needs-right-origin (param $var$0 i32) (result i32) @@ -4320,7 +4472,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) @@ -4355,7 +4507,9 @@ (i32.const 4) ) ) - (unreachable) + (then + (unreachable) + ) ) (i32.const 5) ) @@ -4427,7 +4581,7 @@ ;; CHECK-NEXT: (block ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 0) - ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (then ;; CHECK-NEXT: (block ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (local.set $var$2 @@ -4457,14 +4611,16 @@ (loop $label$1 (if (i32.const 0) - (block - (local.set $var$2 - (i32.add - (i32.const 0) - (i32.const 1) + (then + (block + (local.set $var$2 + (i32.add + (i32.const 0) + (i32.const 1) + ) ) + (br $label$1) ) - (br $label$1) ) ) (local.set $var$3 @@ -4497,36 +4653,42 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 0) - ;; CHECK-NEXT: (loop $label$2 - ;; CHECK-NEXT: (block - ;; CHECK-NEXT: (nop) - ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (local.get $var$1) + ;; CHECK-NEXT: (then + ;; CHECK-NEXT: (loop $label$2 + ;; CHECK-NEXT: (block ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: (if + ;; CHECK-NEXT: (local.get $var$1) + ;; CHECK-NEXT: (then + ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $var$3 - ;; CHECK-NEXT: (i32.const 1) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (nop) - ;; CHECK-NEXT: (nop) - ;; CHECK-NEXT: (local.set $var$1 - ;; CHECK-NEXT: (i32.sub + ;; CHECK-NEXT: (local.set $var$3 + ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: (local.set $var$1 + ;; CHECK-NEXT: (i32.sub + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: (local.get $var$3) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (br_if $label$2 ;; CHECK-NEXT: (i32.const 0) - ;; CHECK-NEXT: (local.get $var$3) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (br_if $label$2 - ;; CHECK-NEXT: (i32.const 0) - ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $var$1) - ;; CHECK-NEXT: (local.set $var$3 - ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: (then + ;; CHECK-NEXT: (local.set $var$3 + ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -4565,28 +4727,34 @@ ) (if (i32.const 0) - (loop $label$2 - (if - (local.get $var$1) - (nop) - ) - (local.set $var$1 - (i32.sub - (i32.const 0) - (local.tee $var$3 - (i32.const 1) + (then + (loop $label$2 + (if + (local.get $var$1) + (then + (nop) ) ) - ) - (br_if $label$2 - (i32.const 0) + (local.set $var$1 + (i32.sub + (i32.const 0) + (local.tee $var$3 + (i32.const 1) + ) + ) + ) + (br_if $label$2 + (i32.const 0) + ) ) ) ) (if (local.get $var$1) - (local.set $var$3 - (i32.const 1) + (then + (local.set $var$3 + (i32.const 1) + ) ) ) (i32.store |