diff options
author | Thomas Lively <7121787+tlively@users.noreply.github.com> | 2020-03-16 14:41:50 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-16 14:41:50 -0700 |
commit | 83d69b30b56fdc9966c84082092fe25830472dd1 (patch) | |
tree | 712061cdae10da36bb6158d87f6947471ede4750 /test/passes/remove-unused-brs_enable-multivalue.txt | |
parent | aadec4526b339af4d2d2b92d3d64f07f935df7a5 (diff) | |
download | binaryen-83d69b30b56fdc9966c84082092fe25830472dd1.tar.gz binaryen-83d69b30b56fdc9966c84082092fe25830472dd1.tar.bz2 binaryen-83d69b30b56fdc9966c84082092fe25830472dd1.zip |
Handle tuples in RemoveUnusedBrs (#2693)
RemoveUnusedBrs produces selects for some patterns, but selects of
multivalue types are not valid. This change checks that types are not
tuple types before producing selects.
Diffstat (limited to 'test/passes/remove-unused-brs_enable-multivalue.txt')
-rw-r--r-- | test/passes/remove-unused-brs_enable-multivalue.txt | 2505 |
1 files changed, 2505 insertions, 0 deletions
diff --git a/test/passes/remove-unused-brs_enable-multivalue.txt b/test/passes/remove-unused-brs_enable-multivalue.txt new file mode 100644 index 000000000..074237d8d --- /dev/null +++ b/test/passes/remove-unused-brs_enable-multivalue.txt @@ -0,0 +1,2505 @@ +(module + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_i32_i64 (func (result i32 i64))) + (type $none_=>_i64 (func (result i64))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_f64_i32_f64_f32_f32_=>_i32 (func (param i32 f64 i32 f64 f32 f32) (result i32))) + (type $f32_i32_f32_i32_i32_f64_f32_=>_i32 (func (param f32 i32 f32 i32 i32 f64 f32) (result i32))) + (type $i32_=>_i64 (func (param i32) (result i64))) + (type $none_=>_f32 (func (result f32))) + (type $i32_=>_f32 (func (param i32) (result f32))) + (memory $0 256 256) + (func $b0-yes (; 0 ;) (param $i1 i32) + (block $topmost + ) + ) + (func $b1 (; 1 ;) (param $i1 i32) + (block $topmost + (block $block + (drop + (i32.const 0) + ) + ) + ) + ) + (func $b2 (; 2 ;) (param $i1 i32) + (block $topmost + (block $inner + ) + ) + ) + (func $b3-yes (; 3 ;) (param $i1 i32) + (block $topmost + (block $inner + ) + ) + ) + (func $b4 (; 4 ;) (param $i1 i32) + (block $topmost + (block $inner + (block $block + (drop + (i32.const 0) + ) + ) + ) + ) + ) + (func $b5 (; 5 ;) (param $i1 i32) + (block $topmost + (block $inner + (block $block + (drop + (i32.const 0) + ) + ) + ) + ) + ) + (func $b6 (; 6 ;) (param $i1 i32) + (block $topmost + (br_if $topmost + (i32.const 1) + ) + ) + ) + (func $b7 (; 7 ;) (param $i1 i32) + (block $topmost + (block $block + (drop + (i32.const 0) + ) + (br_if $topmost + (i32.const 1) + ) + ) + ) + ) + (func $b8 (; 8 ;) (param $i1 i32) + (block $topmost + (block $inner + (br_if $topmost + (i32.const 1) + ) + ) + ) + ) + (func $b9 (; 9 ;) (param $i1 i32) + (block $topmost + (block $inner + (br_if $topmost + (i32.const 1) + ) + ) + ) + ) + (func $b10 (; 10 ;) (param $i1 i32) + (block $topmost + (block $inner + (block $block + (drop + (i32.const 0) + ) + (br_if $topmost + (i32.const 1) + ) + ) + ) + ) + ) + (func $b11 (; 11 ;) (param $i1 i32) + (block $topmost + (block $inner + (block $block + (drop + (i32.const 0) + ) + (br_if $topmost + (i32.const 1) + ) + ) + ) + ) + ) + (func $b12-yes (; 12 ;) + (if + (i32.const 1) + (block $topmost + (block $block1 + (drop + (i32.const 12) + ) + (block $block + (drop + (i32.const 1) + ) + ) + ) + ) + (block $block3 + (drop + (i32.const 27) + ) + (block $block0 + (drop + (i32.const 2) + ) + ) + ) + ) + ) + (func $b13 (; 13 ;) (result i32) + (block $topmost (result i32) + (if + (i32.const 1) + (block $block1 + (drop + (i32.const 12) + ) + (drop + (br_if $topmost + (i32.const 1) + (i32.const 1) + ) + ) + ) + (block $block3 + (drop + (i32.const 27) + ) + (br $topmost + (i32.const 2) + ) + ) + ) + (i32.const 3) + ) + ) + (func $b14 (; 14 ;) (result i32) + (select + (block $topmost (result i32) + (block $block1 (result i32) + (i32.const 12) + ) + ) + (block $block3 (result i32) + (i32.const 27) + ) + (i32.const 1) + ) + ) + (func $b14-tuple (; 15 ;) (result i32 i64) + (if (result i32 i64) + (i32.const 1) + (block $topmost (result i32 i64) + (block $block1 (result i32 i64) + (tuple.make + (i32.const 12) + (i64.const 12) + ) + ) + ) + (block $block3 (result i32 i64) + (tuple.make + (i32.const 27) + (i64.const 27) + ) + ) + ) + ) + (func $b15 (; 16 ;) + (block $topmost + (br_if $topmost + (i32.const 17) + ) + ) + ) + (func $b15b (; 17 ;) + (if + (i32.const 18) + (block $topmost + (block $block + (drop + (i32.const 0) + ) + ) + ) + ) + ) + (func $b16 (; 18 ;) + (block $a + (block $b + (block $c + ) + ) + ) + (block $a1 + (block $b2 + (block $c3 + ) + ) + ) + (block $a4 + (block $b5 + (block $c6 + ) + ) + ) + ) + (func $b17 (; 19 ;) + (if + (i32.const 0) + (block $a + (block $block1 + ) + ) + (block $block3 + ) + ) + (if + (i32.const 0) + (block $a7 + (drop + (i32.const 1) + ) + ) + (block $block6 + ) + ) + (if + (i32.const 0) + (block $a9 + (block $block8 + ) + ) + (drop + (i32.const 1) + ) + ) + (if + (i32.const 0) + (block $c + (block $b + (block $block11 + ) + ) + ) + (block $block13 + ) + ) + ) + (func $ret-1 (; 20 ;) + (nop) + ) + (func $ret-2 (; 21 ;) + (block $block0 + (block $block1 + ) + ) + ) + (func $ret-3 (; 22 ;) + (if + (i32.const 0) + (block $block0 + ) + (block $block3 + ) + ) + ) + (func $ret-value (; 23 ;) (result i32) + (block $block0 (result i32) + (block $block1 (result i32) + (i32.const 1) + ) + ) + ) + (func $no-select-but-the-last (; 24 ;) + (block $a + (if + (i32.const 0) + (drop + (i32.const 1) + ) + (block $block2 + (block $block + (drop + (i32.const 2) + ) + (br $a) + ) + (drop + (i32.const 3) + ) + ) + ) + (if + (i32.const 0) + (block $block4 + (block $block13 + (drop + (i32.const 2) + ) + (br $a) + ) + (drop + (i32.const 3) + ) + ) + (drop + (i32.const 1) + ) + ) + (if + (block $block6 (result i32) + (block $block15 + (drop + (i32.const 2) + ) + (br $a) + ) + (i32.const 3) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 1) + ) + ) + (if + (block $a17 (result i32) + (i32.const 0) + ) + (block $a18 + (block $block19 + (drop + (i32.const 1) + ) + ) + ) + (block $a20 + (block $block21 + (drop + (i32.const 2) + ) + ) + ) + ) + ) + ) + (func $side-effects-and-order (; 25 ;) (result i32) + (local $x i32) + (block $do-once$0 + (if + (call $b13) + (block $block + (drop + (i32.const 0) + ) + (br $do-once$0) + ) + ) + (drop + (i32.const 1) + ) + ) + (block $do-once$022 + (if + (call $b13) + (block $block24 + (drop + (call $b14) + ) + (br $do-once$022) + ) + ) + (drop + (i32.const 1) + ) + ) + (block $do-once$025 + (if + (i32.const 0) + (block $block27 + (drop + (call $b14) + ) + (br $do-once$025) + ) + ) + (drop + (i32.const 1) + ) + ) + (block $do-once$028 (result i32) + (if + (local.tee $x + (i32.const 1) + ) + (br $do-once$028 + (local.tee $x + (i32.const 2) + ) + ) + ) + (i32.const 1) + ) + ) + (func $loops (; 26 ;) + (loop $in + (block $out + (br_if $in + (i32.eqz + (i32.const 0) + ) + ) + ) + ) + (loop $in30 + (br $in30) + ) + (loop $loop-in + (block $out31 + (br_if $out31 + (i32.const 0) + ) + ) + ) + (loop $in33 + (block $out34 + (br_if $out34 + (i32.const 0) + ) + ) + ) + (loop $in36 + (nop) + ) + (loop $in37 + (block $out38 + ) + ) + (loop $in39 + (if + (i32.eqz + (i32.const 0) + ) + (block $out40 + (nop) + (br_if $in39 + (i32.const 1) + ) + ) + ) + ) + (loop $in42 + (block $out43 + (br_if $in42 + (i32.const 0) + ) + ) + ) + (loop $in45 + (if + (i32.const 0) + (block $out46 + (unreachable) + ) + (br $in45) + ) + ) + (loop $in48 + (if + (i32.const 0) + (block $out49 + (block $block + (call $loops) + ) + ) + (br $in48) + ) + ) + (loop $in-todo + (if + (i32.const 0) + (block $out-todo + ) + (block + (call $loops) + (br $in-todo) + ) + ) + ) + (loop $in52 + (if + (i32.const 0) + (block $out53 + ) + (block + (call $loops) + (br $in52) + ) + ) + ) + (loop $in55 + (if + (i32.const 0) + (block + (call $loops) + (br $in55) + ) + (block $out56 + ) + ) + ) + (loop $in58 + (if + (i32.const 0) + (block + (block $block61 + (drop + (i32.const 1) + ) + (call $loops) + ) + (br $in58) + ) + (block $out59 + ) + ) + ) + (loop $in62 + (if + (i32.const 0) + (block $out63 + ) + (block + (call $loops) + (drop + (i32.const 100) + ) + (br $in62) + ) + ) + ) + (loop $in65 + (if + (i32.const 0) + (block + (call $loops) + (drop + (i32.const 101) + ) + (br $in65) + ) + (block $out66 + ) + ) + ) + (loop $in68 + (if + (i32.const 0) + (block + (block $block71 + (drop + (i32.const 1) + ) + (call $loops) + ) + (drop + (i32.const 102) + ) + (br $in68) + ) + (block $out69 + ) + ) + ) + (loop $in72 + (if + (i32.eqz + (i32.const 0) + ) + (block $out73 + (nop) + (call $loops) + (return) + (br $in72) + ) + ) + ) + (loop $in75 + (block $out76 + (br_if $out76 + (i32.const 0) + ) + (call $loops) + (br $out76) + (br $in75) + ) + ) + (loop $in78 + (if + (i32.const 0) + (block $out79 + ) + (block + (call $loops) + (drop + (block $out2 (result i32) + (i32.const 1) + ) + ) + (br $in78) + ) + ) + ) + (loop $in81 + (block $out82 + (br_if $in81 + (i32.eqz + (i32.const 0) + ) + ) + ) + ) + (loop $in-todo2 + (if + (i32.const 0) + (block $out-todo2 + ) + (block + (call $loops) + (br $in-todo2) + ) + ) + ) + (loop $in83 + (block $out84 + (br $out84) + (br $in83) + ) + ) + (loop $in85 + (block $out86 + (drop + (i32.const 0) + ) + (br $in85) + ) + ) + (loop $in-not + (block $out-not + (br_if $out-not + (i32.const -1) + ) + (br_if $out-not + (i32.const 0) + ) + (call $loops) + (br $in-not) + ) + ) + (loop $in-todo287 + (if + (i32.const 0) + (block $out-todo288 + ) + (block + (call $loops) + (drop + (i32.const 1) + ) + (br $in-todo287) + ) + ) + ) + ) + (func $br_if_in_block (; 27 ;) (result i32) + (block $outval (result i32) + (block $in + (drop + (i32.const 1) + ) + (br $in) + (drop + (i32.const 2) + ) + (br_if $in + (i32.eqz + (i32.const 3) + ) + ) + (unreachable) + (drop + (i32.const 4) + ) + (br_if $in + (i32.const 5) + ) + (unreachable) + (drop + (i32.const 6) + ) + ) + (select + (i32.const 7) + (i32.const 8) + (i32.const 6) + ) + ) + ) + (func $threading (; 28 ;) + (drop + (block $value-out (result i32) + (block $value-in (result i32) + (block $out + (block $in + (br_if $out + (i32.const 1) + ) + (br_if $out + (i32.const 2) + ) + (br $value-in + (i32.const 3) + ) + ) + ) + (i32.const 4) + ) + ) + ) + (block $stack1 + (block $stack2 + (block $stack3 + (block $stack4 + (br_if $stack1 + (i32.const 1) + ) + (unreachable) + ) + ) + ) + ) + ) + (func $if-to-br_if-conflict (; 29 ;) (param $x i32) (param $y i32) (result i32) + (block $leave + (local.set $y + (block $out (result i32) + (if + (local.get $x) + (br $out + (block $block (result i32) + (local.set $x + (i32.const 0) + ) + (i32.const 1) + ) + ) + (br_if $leave + (i32.const 1) + ) + ) + (unreachable) + ) + ) + ) + (i32.add + (local.get $x) + (local.get $y) + ) + ) + (func $if-to-br_if-conflict2 (; 30 ;) (param $x i32) (param $y i32) (result i32) + (block $leave + (local.set $y + (block $out (result i32) + (if + (local.get $x) + (br_if $leave + (i32.const 1) + ) + (br $out + (block $block (result i32) + (local.set $x + (i32.const 0) + ) + (i32.const 1) + ) + ) + ) + (unreachable) + ) + ) + ) + (i32.add + (local.get $x) + (local.get $y) + ) + ) + (func $if-to-br_if-value-sideeffect (; 31 ;) (param $x i32) (param $y i32) (result i32) + (block $leave + (local.set $y + (block $out (result i32) + (if + (local.get $x) + (br $out + (block $block (result i32) + (drop + (call $if-to-br_if-value-sideeffect + (i32.const 0) + (i32.const 1) + ) + ) + (nop) + (i32.const 1) + ) + ) + ) + (unreachable) + ) + ) + ) + (i32.add + (local.get $x) + (local.get $y) + ) + ) + (func $fuzz (; 32 ;) (param $j i32) (param $g i32) + (loop $label$continue$d + (block $label$break$c + (block $label$break$d + (if + (i32.lt_s + (local.get $j) + (i32.const 2147483640) + ) + (block $x + (block $y + (block $z + (br_if $x + (local.get $j) + ) + ) + ) + ) + (block $switch$26 + ) + ) + (i32.store + (i32.const 5724) + (i32.const -254899267) + ) + (br $label$continue$d) + ) + ) + ) + ) + (func $iffify (; 33 ;) + (if + (i32.eqz + (i32.const 0) + ) + (block $yes + (nop) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + ) + ) + (block $no + (br_if $no + (i32.const 0) + ) + (drop + (i32.const 1) + ) + (br $no) + (drop + (i32.const 2) + ) + ) + (block $no2 + (br_if $no2 + (i32.const 0) + ) + ) + (block $no3 + (br $no3) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + ) + (block $no5 + (block $no4 + (br_if $no5 + (i32.const 0) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + ) + ) + ) + (func $loop-if (; 34 ;) (result i32) + (loop $typed (result i32) + (block $outer (result i32) + (block (result i32) + (br_if $typed + (i32.eqz + (i32.const 2) + ) + ) + (block $block (result i32) + (drop + (call $loop-if) + ) + (i32.const 0) + ) + ) + ) + ) + ) + (func $block-break (; 35 ;) (param $0 i32) + (block $block$7$break + (block $shape$6$continue + (call $block-break + (i32.const 1) + ) + ) + ) + ) + (func $loop-break (; 36 ;) (param $0 i32) + (loop $shape$6$continue + (block $block$7$break + (block + (call $loop-break + (i32.const 1) + ) + (br_if $shape$6$continue + (local.get $0) + ) + (nop) + ) + ) + ) + ) + (func $untaken-brs-might-prevent-block-removal (; 37 ;) (param $0 f32) (param $1 i32) (param $2 f32) (param $3 i32) (param $4 i32) (param $5 f64) (param $6 f32) (result i32) + (block $label$0 (result i32) + (block $label$1 + (br_if $label$1 + (i32.const 607395945) + ) + (br_if $label$1 + (i32.load offset=3 align=1 + (select + (call $untaken-brs-might-prevent-block-removal + (f32.const 1.4904844647389837e-07) + (br_if $label$0 + (i32.store16 offset=4 align=1 + (i32.const 1900641) + (br $label$0 + (i32.const 1628075109) + ) + ) + (i32.const 1764950569) + ) + (f32.const 1.1910939690100655e-32) + (i32.const 1628057906) + (i32.const 859068982) + (f64.const 2.524518840347722e-258) + (f32.const -nan:0x40a63) + ) + (i32.const 688529440) + (i32.const 1751478890) + ) + ) + ) + ) + (i32.const 1935947830) + ) + ) + (func $unexitable-loops-result (; 38 ;) (param $0 i32) (result i64) + (loop $label$0 + (loop $label$1 + (br_if $label$0 + (i32.load8_s + (i32.const 201460482) + ) + ) + (block + (block $label$3 + (br_if $label$1 + (local.get $0) + ) + ) + (br $label$1) + ) + ) + ) + ) + (func $untaken-br-with-concrete-last-element (; 39 ;) + (block $label$8 + (block $label$11 + (block $label$14 + (br_if $label$8 + (br $label$8) + ) + ) + ) + ) + ) + (func $untaken-br-with-concrete-last-element2 (; 40 ;) (result i32) + (block $label$8 (result i32) + (block $label$11 (result i32) + (block $label$14 (result i32) + (br_if $label$14 + (i32.const 102) + (br $label$11 + (i32.const 103) + ) + ) + ) + ) + ) + ) + (func $untaken-br_if-then-if (; 41 ;) + (block $label$0 + (br_if $label$0 + (unreachable) + ) + (if + (i32.const 0) + (nop) + ) + ) + ) + (func $unreachable-if-that-could-be-a-br_if (; 42 ;) (result i64) + (loop $label$3 (result i64) + (drop + (if (result f64) + (unreachable) + (f64.const 1) + (br $label$3) + ) + ) + (i64.const 1) + ) + ) + (func $nop-br-might-update-type (; 43 ;) + (block $label$39 + (drop + (if (result i32) + (unreachable) + (if (result i32) + (i32.const 1) + (br $label$39) + (i32.const 0) + ) + (i32.const 0) + ) + ) + ) + ) + (func $no-flow-through-if-without-else (; 44 ;) (result f32) + (local $0 i32) + (local $2 f32) + (if (result f32) + (local.get $0) + (block $label$0 + (block $label$11 + (return + (f32.const 239) + ) + (if + (i32.const 0) + (return + (local.get $2) + ) + ) + ) + ) + (f32.const -9223372036854775808) + ) + ) + (func $unreachable-return-loop-value (; 45 ;) (result i64) + (loop $loop + (if + (i32.const 1) + (block $block + (br_if $block + (br $loop) + ) + (br $loop) + ) + ) + (br $loop) + ) + ) + (func $obviously-flows-out-maybe (; 46 ;) (param $var$0 i32) (result f32) + (block $label$1 (result f32) + (br $label$1 + (f32.const 1) + ) + (loop $label$5 + (if + (i32.const 11) + (block $label$8 + (br_if $label$8 + (unreachable) + ) + (br $label$5) + ) + ) + (br $label$5) + ) + ) + ) + (func $br-to-table (; 47 ;) (param $a i32) + (block $x + (block $y + (block $z + (nop) + (nop) + (block $tablify|0 + (br_table $x $y $z $tablify|0 + (local.get $a) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-too-few (; 48 ;) (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (local.get $a) + (i32.const 0) + ) + ) + (br_if $x + (i32.eq + (local.get $a) + (i32.const 1) + ) + ) + ) + ) + ) + ) + (func $br-to-table-one-more (; 49 ;) (param $a i32) + (block $x + (block $y + (block $z + (nop) + (nop) + (nop) + (block $tablify|0 + (br_table $x $y $z $x $tablify|0 + (local.get $a) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-overlap (; 50 ;) (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (local.get $a) + (i32.const 0) + ) + ) + (br_if $y + (i32.eq + (local.get $a) + (i32.const 1) + ) + ) + (br_if $z + (i32.eq + (local.get $a) + (i32.const 1) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-overlap-start (; 51 ;) (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (local.get $a) + (i32.const 0) + ) + ) + (br_if $y + (i32.eq + (local.get $a) + (i32.const 0) + ) + ) + (br_if $z + (i32.eq + (local.get $a) + (i32.const 1) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-offset (; 52 ;) (param $a i32) + (block $x + (block $y + (block $z + (nop) + (nop) + (block $tablify|0 + (br_table $x $y $z $tablify|0 + (i32.sub + (local.get $a) + (i32.const 15) + ) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-RANGE-high (; 53 ;) (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (local.get $a) + (i32.const 0) + ) + ) + (br_if $y + (i32.eq + (local.get $a) + (i32.const 1) + ) + ) + (br_if $z + (i32.eq + (local.get $a) + (i32.const 10) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-RANGE-low (; 54 ;) (param $a i32) + (block $x + (block $y + (block $z + (nop) + (nop) + (block $tablify|0 + (br_table $x $tablify|0 $tablify|0 $y $tablify|0 $tablify|0 $tablify|0 $tablify|0 $tablify|0 $z $tablify|0 + (local.get $a) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-bad (; 55 ;) (param $a i32) (result i32) + (block $value (result i32) + (block $x + (block $y + (block $z + (nop) + (br $x) + (nop) + (nop) + (block $tablify|0 + (br_table $x $y $z $tablify|0 + (local.get $a) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (i32.const 2000) + ) + ) + (func $br-to-table-bad2 (; 56 ;) (param $a i32) (result i32) + (block $value (result i32) + (block $x + (block $y + (block $z + (nop) + (drop + (br_if $value + (i32.const 1000) + (i32.eq + (local.get $a) + (i32.const 0) + ) + ) + ) + (nop) + (nop) + (block $tablify|0 + (br_table $x $y $z $tablify|0 + (local.get $a) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (i32.const 2000) + ) + ) + (func $br-to-table-bad3 (; 57 ;) (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (i32.const 10) + (i32.const 0) + ) + ) + (nop) + (nop) + (block $tablify|0 + (br_table $x $y $z $tablify|0 + (local.get $a) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-multi (; 58 ;) (param $a i32) + (block $x + (block $y + (block $z + (nop) + (nop) + (block $tablify|0 + (br_table $z $y $x $tablify|0 + (i32.sub + (i32.const 10) + (i32.const 5) + ) + ) + ) + (nop) + (nop) + (block $tablify|00 + (br_table $x $y $z $tablify|00 + (local.get $a) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-bad4 (; 59 ;) (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.ne + (local.get $a) + (i32.const 0) + ) + ) + (br_if $y + (i32.eq + (local.get $a) + (i32.const 1) + ) + ) + (br_if $z + (i32.eq + (local.get $a) + (i32.const 2) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-bad5 (; 60 ;) (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (local.get $a) + (local.get $a) + ) + ) + (br_if $y + (i32.eq + (local.get $a) + (local.get $a) + ) + ) + (br_if $z + (i32.eq + (local.get $a) + (local.get $a) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-bad6 (; 61 ;) (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (call $b13) + (i32.const 0) + ) + ) + (br_if $y + (i32.eq + (call $b13) + (i32.const 1) + ) + ) + (br_if $z + (i32.eq + (call $b13) + (i32.const 2) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-bad7 (; 62 ;) (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (local.get $a) + (i32.const -1) + ) + ) + (br_if $y + (i32.eq + (local.get $a) + (i32.const -1) + ) + ) + (br_if $z + (i32.eq + (local.get $a) + (i32.const -1) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-defaultNameOverlaps (; 63 ;) (param $a i32) + (block $x + (block $tablify|0 + (block $z + (nop) + (nop) + (block $tablify|1 + (br_table $x $tablify|0 $z $tablify|1 + (local.get $a) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-unreach (; 64 ;) (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (unreachable) + (i32.const 0) + ) + ) + (br_if $y + (i32.eq + (unreachable) + (i32.const 1) + ) + ) + (br_if $z + (i32.eq + (unreachable) + (i32.const 2) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-overlap-but-later (; 65 ;) (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (local.get $a) + (i32.const 0) + ) + ) + (br_if $y + (i32.eq + (local.get $a) + (i32.const 1) + ) + ) + (nop) + (nop) + (block $tablify|0 + (br_table $z $x $y $tablify|0 + (i32.sub + (local.get $a) + (i32.const 1) + ) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $tiny-switch (; 66 ;) + (if + (i32.const 0) + (block $y + ) + (block $x + ) + ) + (block $z + (block + (drop + (i32.const 0) + ) + (nop) + ) + ) + ) + (func $trim-switch (; 67 ;) + (block $A + (block $y + (br_table $A $y $A $y $A $y + (i32.sub + (i32.const 0) + (i32.const 2) + ) + ) + ) + (call $trim-switch) + ) + ) + (func $same-target-br_if-and-br (; 68 ;) + (block $x + (drop + (i32.const 0) + ) + (br $x) + (unreachable) + ) + ) + (func $simple-switch (; 69 ;) (result i32) + (block $A + (block $B + (block $y + (br_table $A $y $y $y $y $y $A $y $y $y $y $A $y + (i32.const 0) + ) + (return + (i32.const 0) + ) + ) + (return + (i32.const 1) + ) + ) + (return + (i32.const 2) + ) + ) + (i32.const 3) + ) + (func $simple-switch-2 (; 70 ;) (result i32) + (block $A + (block $B + (block $y + (br_table $A $y $y $y $y $y $y $y $y $y $y $y $A $y + (i32.const 0) + ) + (return + (i32.const 0) + ) + ) + (return + (i32.const 1) + ) + ) + (return + (i32.const 2) + ) + ) + (i32.const 3) + ) + (func $simple-switch-3 (; 71 ;) (result i32) + (block $A + (block $B + (block $y + (br_table $A $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $B $y + (i32.const 0) + ) + (return + (i32.const 0) + ) + ) + (return + (i32.const 1) + ) + ) + (return + (i32.const 2) + ) + ) + (i32.const 3) + ) + (func $simple-switch43 (; 72 ;) (result i32) + (local $0 i32) + (block $A + (block $B + (block $y + (br_if $A + (i32.eqz + (local.tee $0 + (i32.const 0) + ) + ) + ) + (br_if $B + (i32.eq + (local.get $0) + (i32.const 127) + ) + ) + (br $y) + (return + (i32.const 0) + ) + ) + (return + (i32.const 1) + ) + ) + (return + (i32.const 2) + ) + ) + (i32.const 3) + ) + (func $simple-switch-5 (; 73 ;) (result i32) + (block $A + (block $B + (block $y + (br_table $A $y $y $y $y $y $A $y $y $y $y $y $A $y + (i32.const 0) + ) + (return + (i32.const 0) + ) + ) + (return + (i32.const 1) + ) + ) + (return + (i32.const 2) + ) + ) + (i32.const 3) + ) + (func $undo-if-return (; 74 ;) (param $p i32) (result i32) + (local $x i32) + (block $out + (block + (br_if $out + (local.get $p) + ) + (local.set $x + (i32.const 1) + ) + ) + (block + (br_if $out + (i32.eqz + (local.get $p) + ) + ) + (local.set $x + (i32.const 2) + ) + ) + (local.set $x + (if (result i32) + (local.get $p) + (br $out) + (br $out) + ) + ) + ) + (local.get $p) + ) + (func $if-unreachable-but-declares-value (; 75 ;) (param $var$0 i32) (param $var$1 f64) (param $var$2 i32) (param $var$3 f64) (param $var$4 f32) (param $var$5 f32) (result i32) + (local $var$6 f64) + (if + (i32.const 0) + (drop + (loop $label$3 (result i64) + (block $label$4 (result i64) + (block $label$5 + (block $label$6 + (local.set $var$1 + (if (result f64) + (unreachable) + (br $label$5) + (f64.const 1) + ) + ) + ) + ) + (i64.const 1) + ) + ) + ) + ) + (i32.const 0) + ) + (func $if-flow-1 (; 76 ;) (result i32) + (select + (i32.const 1) + (i32.const 2) + (i32.const 0) + ) + ) + (func $if-flow-2 (; 77 ;) (result i32) + (if (result i32) + (i32.const 0) + (unreachable) + (i32.const 2) + ) + ) + (func $if-flow-3 (; 78 ;) (result i32) + (if (result i32) + (i32.const 0) + (i32.const 1) + (unreachable) + ) + ) + (func $if-flow-4 (; 79 ;) (result i32) + (if + (return + (i32.const 0) + ) + (return + (i32.const 1) + ) + (return + (i32.const 2) + ) + ) + ) + (func $iff-flow-fuzz-bug (; 80 ;) (result i32) + (loop $label$1 + (br_if $label$1 + (i32.eqz + (i32.const 1) + ) + ) + (loop $label$2 + (unreachable) + (if + (i32.const 0) + (nop) + (return + (i32.const 0) + ) + ) + ) + ) + ) + (func $fuzz-block-unreachable-brs-with-values (; 81 ;) (result i32) + (local $0 i32) + (loop $label$1 + (if + (local.get $0) + (block $label$2 + (local.tee $0 + (loop $label$5 + (br_if $label$5 + (block + (unreachable) + (drop + (i32.const 0) + ) + ) + ) + ) + ) + ) + (br $label$1) + ) + ) + ) + (func $drop-restructure-if (; 82 ;) (param $x i32) (param $y i32) (result i32) + (if (result i32) + (local.get $y) + (local.get $x) + (block $label$2 (result i32) + (nop) + (i32.const 0) + ) + ) + ) + (func $drop-restructure-if-final (; 83 ;) (param $x i32) (param $y i32) (result i32) + (if (result i32) + (local.get $y) + (local.get $x) + (block $label$2 (result i32) + (nop) + (unreachable) + ) + ) + ) + (func $drop-restructure-if-middle (; 84 ;) (param $x i32) (param $y i32) (result i32) + (if (result i32) + (local.get $y) + (local.get $x) + (block $label$2 (result i32) + (nop) + (nop) + (i32.const 0) + ) + ) + ) + (func $drop-restructure-if-bad (; 85 ;) (param $x i32) (param $y i32) (result i32) + (block $label$2 (result i32) + (drop + (br_if $label$2 + (local.tee $y + (local.get $x) + ) + (local.get $y) + ) + ) + (i32.const 0) + ) + ) + (func $drop-restructure-if-bad-2 (; 86 ;) (param $x i32) (param $y i32) (result i32) + (block $label$2 (result i32) + (drop + (br_if $label$2 + (local.get $y) + (local.tee $y + (local.get $x) + ) + ) + ) + (i32.const 0) + ) + ) + (func $if-block (; 87 ;) + (if + (i32.const 1) + (block $label + (block $block + (drop + (i32.const 2) + ) + (drop + (i32.const 3) + ) + ) + ) + ) + ) + (func $if-block-bad (; 88 ;) + (block $label + (if + (br $label) + (block $block + (drop + (i32.const 2) + ) + (drop + (i32.const 3) + ) + ) + ) + ) + ) + (func $if-block-br (; 89 ;) + (block $label + (br_if $label + (i32.const 1) + ) + ) + ) + (func $if-block-br-1 (; 90 ;) + (if + (i32.const 1) + (block $label + ) + (drop + (i32.const 3) + ) + ) + ) + (func $if-block-br-2 (; 91 ;) + (if + (i32.const 1) + (block $label + (drop + (i32.const 3) + ) + ) + (nop) + ) + ) + (func $if-block-br-3 (; 92 ;) + (if + (i32.const 1) + (block $label + ) + (nop) + ) + ) + (func $if-block-br-4-eithre (; 93 ;) + (if + (i32.const 1) + (block $label + (drop + (i32.const 2) + ) + ) + (drop + (i32.const 3) + ) + ) + ) + (func $if-block-br-5-value (; 94 ;) (result i32) + (select + (block $label (result i32) + (i32.const 2) + ) + (i32.const 3) + (i32.const 1) + ) + ) + (func $restructure-if-outerType-change (; 95 ;) + (loop $label$1 + (br_if $label$1 + (block $label$2 + (if + (block $label$4 + (unreachable) + ) + (block $label$3 + (br $label$3) + ) + ) + (unreachable) + ) + ) + ) + ) + (func $if-arm-unreachable (; 96 ;) + (if + (unreachable) + (block $label$1 + (nop) + ) + (unreachable) + ) + ) + (func $propagate-type-if-we-optimize (; 97 ;) + (if + (i32.const 1) + (nop) + (block $block + (drop + (loop $label$3 (result i64) + (br_if $label$3 + (if + (i32.const 0) + (block $label$4 + (unreachable) + ) + (unreachable) + ) + ) + (i64.const -9) + ) + ) + (unreachable) + ) + ) + ) + (func $switch-to-br (; 98 ;) + (block $A + (block $y + (block + (drop + (i32.const 0) + ) + (br $A) + ) + ) + ) + ) + (func $switch-to-br-value (; 99 ;) (result i32) + (block $A (result i32) + (block $y (result i32) + (block + (drop + (i32.const 1) + ) + (br $A + (i32.const 0) + ) + ) + ) + ) + ) + (func $switch-threading-multi (; 100 ;) (param $x i32) (param $y i32) (result i32) + (block $block$5$break + (block $block$4$break + (loop $shape$1$continue + (block $block$3$break + (block $switch$2$case$5 + (block $switch$2$case$4 + (block $switch$2$default + (block $switch$2$case$2 + (br_table $shape$1$continue $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$5$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$4$break $block$3$break + (local.get $x) + ) + ) + (br $shape$1$continue) + ) + (br $block$3$break) + ) + (br $block$4$break) + ) + (br $block$5$break) + ) + ) + (unreachable) + ) + (local.set $y + (i32.const 1) + ) + (unreachable) + ) + (local.set $y + (i32.const 2) + ) + (unreachable) + ) + (func $fuzz-type-changes-in-our-cycles (; 101 ;) (result i32) + (loop $label$1 + (if + (i32.const 0) + (if + (i32.const 0) + (block $label$3 + (block $block + ) + ) + (return + (i32.const -8192) + ) + ) + ) + (br $label$1) + ) + ) + (func $refinalize-need-br-value (; 102 ;) (result i32) + (loop $label$3 (result i32) + (block $label$6 (result i32) + (block $label$10 + (unreachable) + (block $label$503 + (br_if $label$3 + (block $label$530 (result i32) + (br_if $label$503 + (i32.const 0) + ) + (i32.const 0) + ) + ) + (return + (i32.const 127) + ) + ) + ) + ) + ) + ) + (func $selectify (; 103 ;) (param $x i32) + (drop + (if (result i32) + (i32.eq + (local.get $x) + (i32.const 1) + ) + (i32.mul + (i32.const 2) + (i32.const 3) + ) + (i32.mul + (i32.const 2) + (i32.const 3) + ) + ) + ) + (drop + (select + (i32.add + (i32.const 2) + (i32.const 3) + ) + (i32.add + (i32.const 2) + (i32.const 3) + ) + (i32.eq + (local.get $x) + (i32.const 1) + ) + ) + ) + ) + (func $if-one-side (; 104 ;) (result i32) + (local $x i32) + (local.set $x + (select + (i32.const 2) + (local.get $x) + (i32.const 1) + ) + ) + (local.get $x) + ) + (func $if-one-side-b (; 105 ;) (result i32) + (local $x i32) + (local.set $x + (select + (local.get $x) + (i32.const 2) + (i32.const 1) + ) + ) + (local.get $x) + ) + (func $if-one-side-tee-etc (; 106 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $x i32) + (local $y i32) + (local $z i32) + (drop + (call $if-one-side-tee-etc + (local.tee $x + (select + (i32.const -4) + (local.get $x) + (i32.const -3) + ) + ) + ) + ) + (i32.const 0) + ) + (func $ifs-copies-recursive (; 107 ;) (param $20 i32) (result i32) + (if + (i32.const 1) + (local.set $20 + (select + (select + (i32.const 4) + (local.get $20) + (i32.const 3) + ) + (local.get $20) + (i32.const 2) + ) + ) + ) + (local.get $20) + ) + (func $if-copy1 (; 108 ;) + (local $x i32) + (local $y i32) + (loop $top + (local.set $x + (select + (local.get $x) + (local.get $y) + (i32.const 1) + ) + ) + (br $top) + ) + ) + (func $if-copy3 (; 109 ;) + (local $x i32) + (local $y i32) + (loop $top + (if + (i32.const 1) + (local.tee $x + (unreachable) + ) + ) + (br $top) + ) + ) + (func $if-copy4 (; 110 ;) + (local $x i32) + (local $y i32) + (loop $top + (local.set $x + (if (result i32) + (i32.const 1) + (unreachable) + (local.get $y) + ) + ) + (br $top) + ) + ) + (func $if-copy-tee (; 111 ;) + (local $x i32) + (local $y i32) + (loop $top + (drop + (local.tee $x + (select + (local.get $x) + (i32.const 2) + (i32.const 1) + ) + ) + ) + (br $top) + ) + ) + (func $loop-end-set (; 112 ;) (param $x i32) (result i32) + (loop $loop + (nop) + (br_if $loop + (local.get $x) + ) + (local.set $x + (i32.const 1) + ) + ) + (local.get $x) + ) + (func $loop-end-value (; 113 ;) (param $x i32) (result i32) + (loop $loop (result i32) + (nop) + (br_if $loop + (local.get $x) + ) + (i32.const 1) + ) + ) + (func $do-not-flow-values-through-unreachable-code (; 114 ;) (result i32) + (block $block + (unreachable) + (if + (i32.const 0) + (block $A + (return + (i32.const 0) + ) + ) + (nop) + ) + ) + ) + (func $do-not-flow-values-through-unreachable-code-b (; 115 ;) (result i32) + (loop $loop-in + (unreachable) + (if + (i32.const 0) + (block $A + (return + (i32.const 0) + ) + ) + (nop) + ) + ) + ) + (func $if_br_if (; 116 ;) + (local $0 i32) + (block $label$1 + (br_if $label$1 + (select + (local.tee $0 + (i32.const 1024) + ) + (i32.const 0) + (i32.eqz + (i32.const -4) + ) + ) + ) + (br_if $label$1 + (select + (i32.const 1025) + (i32.const 0) + (i32.eqz + (i32.const -5) + ) + ) + ) + (br_if $label$1 + (select + (local.tee $0 + (i32.const 1025) + ) + (i32.const 0) + (i32.eqz + (i32.const -6) + ) + ) + ) + (if + (i32.const 1026) + (br_if $label$1 + (local.tee $0 + (i32.const -7) + ) + ) + ) + (i32.store + (i32.const 1024) + (i32.add + (local.get $0) + (i32.const 1) + ) + ) + ) + ) +) |