| (module |
| (memory 256 256) |
| (type $i (func (param i32))) |
| (type $ii (func (param i32 i32))) |
| (type $iii (func (param i32 i32 i32))) |
| (type $3 (func)) |
| (table 1 1 anyfunc) |
| (elem (i32.const 0) $call-i) |
| (func $call-i (type $i) (param $0 i32) |
| (nop) |
| ) |
| (func $call-ii (type $ii) (param $0 i32) (param $1 i32) |
| (nop) |
| ) |
| (func $call-iii (type $iii) (param $0 i32) (param $1 i32) (param $2 i32) |
| (nop) |
| ) |
| (func $b0-yes (type $i) (param $i1 i32) |
| (block $topmost |
| (block $block0 |
| (drop |
| (i32.const 10) |
| ) |
| ) |
| ) |
| ) |
| (func $b0-no (type $i) (param $i1 i32) |
| (block $topmost |
| (block $block0 |
| (br $block0) |
| ) |
| (br $topmost) |
| ) |
| ) |
| (func $b0-br-but-ok (type $i) (param $i1 i32) |
| (block $topmost |
| (block $block0 |
| (br $topmost) |
| ) |
| ) |
| ) |
| (func $b1-yes (type $i) (param $i1 i32) |
| (block $topmost |
| (block $block0 |
| (block $block1 |
| (drop |
| (i32.const 10) |
| ) |
| ) |
| ) |
| ) |
| ) |
| (func $b2-yes (type $i) (param $i1 i32) |
| (block $topmost |
| (drop |
| (i32.const 5) |
| ) |
| (block $block0 |
| (drop |
| (i32.const 10) |
| ) |
| ) |
| (drop |
| (i32.const 15) |
| ) |
| ) |
| ) |
| (func $b3-yes (type $i) (param $i1 i32) |
| (block $topmost |
| (drop |
| (i32.const 3) |
| ) |
| (block $block0 |
| (drop |
| (i32.const 6) |
| ) |
| (block $block1 |
| (drop |
| (i32.const 10) |
| ) |
| ) |
| (drop |
| (i32.const 15) |
| ) |
| ) |
| (drop |
| (i32.const 20) |
| ) |
| ) |
| ) |
| (func $b4 (type $i) (param $i1 i32) |
| (block $topmost |
| (block $inner |
| (drop |
| (i32.const 10) |
| ) |
| (br $inner) |
| ) |
| ) |
| ) |
| (func $b5 (type $i) (param $i1 i32) |
| (block $topmost |
| (block $middle |
| (block $inner |
| (drop |
| (i32.const 10) |
| ) |
| (br $inner) |
| ) |
| (br $middle) |
| ) |
| ) |
| ) |
| (func $b6 (type $i) (param $i1 i32) |
| (block $topmost |
| (drop |
| (i32.const 5) |
| ) |
| (block $inner |
| (drop |
| (i32.const 10) |
| ) |
| (br $inner) |
| ) |
| (drop |
| (i32.const 15) |
| ) |
| ) |
| ) |
| (func $b7 (type $i) (param $i1 i32) |
| (block $topmost |
| (drop |
| (i32.const 3) |
| ) |
| (block $middle |
| (drop |
| (i32.const 6) |
| ) |
| (block $inner |
| (drop |
| (i32.const 10) |
| ) |
| (br $inner) |
| ) |
| (drop |
| (i32.const 15) |
| ) |
| (br $middle) |
| ) |
| (drop |
| (i32.const 20) |
| ) |
| ) |
| ) |
| (func $unary (type $3) |
| (local $x i32) |
| (drop |
| (i32.eqz |
| (block $block0 i32 |
| (i32.const 10) |
| ) |
| ) |
| ) |
| (drop |
| (i32.eqz |
| (block $block1 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| ) |
| ) |
| (drop |
| (i32.eqz |
| (block $block2 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (drop |
| (i32.const 20) |
| ) |
| (i32.const 30) |
| ) |
| ) |
| ) |
| (set_local $x |
| (block $block3 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| ) |
| (drop |
| (i32.load |
| (block $block4 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| ) |
| ) |
| (return |
| (block $block5 |
| (drop |
| (i32.const 10) |
| ) |
| (unreachable) |
| ) |
| ) |
| ) |
| (func $binary (type $3) |
| (drop |
| (i32.add |
| (block $block0 i32 |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| ) |
| (drop |
| (i32.add |
| (block $block1 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| (i32.const 30) |
| ) |
| ) |
| (drop |
| (i32.add |
| (block $block2 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (drop |
| (i32.const 20) |
| ) |
| (i32.const 30) |
| ) |
| (i32.const 40) |
| ) |
| ) |
| (drop |
| (i32.add |
| (i32.const 10) |
| (block $block3 i32 |
| (i32.const 20) |
| ) |
| ) |
| ) |
| (drop |
| (i32.add |
| (i32.const 10) |
| (block $block4 i32 |
| (drop |
| (i32.const 20) |
| ) |
| (i32.const 30) |
| ) |
| ) |
| ) |
| (drop |
| (i32.add |
| (i32.const 10) |
| (block $block5 i32 |
| (drop |
| (i32.const 20) |
| ) |
| (drop |
| (i32.const 30) |
| ) |
| (i32.const 40) |
| ) |
| ) |
| ) |
| (drop |
| (i32.add |
| (block $block6 i32 |
| (i32.const 10) |
| ) |
| (block $block7 i32 |
| (i32.const 20) |
| ) |
| ) |
| ) |
| (drop |
| (i32.add |
| (block $block8 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| (block $block9 i32 |
| (drop |
| (i32.const 30) |
| ) |
| (i32.const 40) |
| ) |
| ) |
| ) |
| (drop |
| (i32.add |
| (block $block10 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (drop |
| (i32.const 20) |
| ) |
| (i32.const 30) |
| ) |
| (block $block11 i32 |
| (drop |
| (i32.const 40) |
| ) |
| (drop |
| (i32.const 50) |
| ) |
| (i32.const 60) |
| ) |
| ) |
| ) |
| (i32.store |
| (i32.const 10) |
| (block $block12 i32 |
| (drop |
| (i32.const 20) |
| ) |
| (i32.const 30) |
| ) |
| ) |
| (i32.store |
| (block $block13 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| (i32.const 30) |
| ) |
| (drop |
| (i32.add |
| (unreachable) |
| (block $block14 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| ) |
| ) |
| (drop |
| (i32.add |
| (block $block15 i32 |
| (unreachable) |
| (i32.const 10) |
| ) |
| (block $block16 i32 |
| (drop |
| (i32.const 20) |
| ) |
| (i32.const 30) |
| ) |
| ) |
| ) |
| ) |
| (func $trinary (type $3) |
| (drop |
| (select |
| (block $block0 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| (block $block1 i32 |
| (drop |
| (i32.const 30) |
| ) |
| (i32.const 40) |
| ) |
| (block $block2 i32 |
| (drop |
| (i32.const 50) |
| ) |
| (i32.const 60) |
| ) |
| ) |
| ) |
| (drop |
| (select |
| (block $block3 i32 |
| (i32.const 10) |
| ) |
| (block $block4 i32 |
| (drop |
| (i32.const 20) |
| ) |
| (i32.const 30) |
| ) |
| (block $block5 i32 |
| (drop |
| (i32.const 40) |
| ) |
| (i32.const 50) |
| ) |
| ) |
| ) |
| (drop |
| (select |
| (block $block6 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| (block $block7 i32 |
| (i32.const 30) |
| ) |
| (block $block8 i32 |
| (drop |
| (i32.const 40) |
| ) |
| (i32.const 50) |
| ) |
| ) |
| ) |
| (drop |
| (select |
| (block $block9 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| (block $block10 i32 |
| (drop |
| (i32.const 30) |
| ) |
| (i32.const 40) |
| ) |
| (block $block11 i32 |
| (i32.const 50) |
| ) |
| ) |
| ) |
| (drop |
| (select |
| (block $block12 i32 |
| (i32.const 10) |
| ) |
| (block $block13 i32 |
| (i32.const 20) |
| ) |
| (block $block14 i32 |
| (drop |
| (i32.const 30) |
| ) |
| (i32.const 40) |
| ) |
| ) |
| ) |
| (drop |
| (select |
| (block $block15 i32 |
| (i32.const 10) |
| ) |
| (block $block16 i32 |
| (drop |
| (i32.const 20) |
| ) |
| (i32.const 30) |
| ) |
| (block $block17 i32 |
| (i32.const 40) |
| ) |
| ) |
| ) |
| (drop |
| (select |
| (block $block18 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| (block $block19 i32 |
| (i32.const 30) |
| ) |
| (block $block20 i32 |
| (i32.const 40) |
| ) |
| ) |
| ) |
| (drop |
| (select |
| (block $block21 i32 |
| (unreachable) |
| (i32.const 20) |
| ) |
| (block $block22 i32 |
| (drop |
| (i32.const 30) |
| ) |
| (i32.const 40) |
| ) |
| (block $block23 i32 |
| (drop |
| (i32.const 50) |
| ) |
| (i32.const 60) |
| ) |
| ) |
| ) |
| (drop |
| (select |
| (block $block24 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (unreachable) |
| ) |
| (block $block25 i32 |
| (drop |
| (i32.const 30) |
| ) |
| (i32.const 40) |
| ) |
| (block $block26 i32 |
| (drop |
| (i32.const 50) |
| ) |
| (i32.const 60) |
| ) |
| ) |
| ) |
| (drop |
| (select |
| (block $block27 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| (block $block28 i32 |
| (unreachable) |
| (i32.const 40) |
| ) |
| (block $block29 i32 |
| (drop |
| (i32.const 50) |
| ) |
| (i32.const 60) |
| ) |
| ) |
| ) |
| (drop |
| (select |
| (block $block30 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| (block $block31 i32 |
| (drop |
| (i32.const 30) |
| ) |
| (unreachable) |
| ) |
| (block $block32 i32 |
| (drop |
| (i32.const 50) |
| ) |
| (i32.const 60) |
| ) |
| ) |
| ) |
| (drop |
| (select |
| (block $block33 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| (block $block34 i32 |
| (drop |
| (i32.const 30) |
| ) |
| (i32.const 40) |
| ) |
| (block $block35 i32 |
| (unreachable) |
| (i32.const 60) |
| ) |
| ) |
| ) |
| (drop |
| (select |
| (block $block36 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| (block $block37 i32 |
| (drop |
| (i32.const 30) |
| ) |
| (i32.const 40) |
| ) |
| (block $block38 i32 |
| (drop |
| (i32.const 50) |
| ) |
| (unreachable) |
| ) |
| ) |
| ) |
| ) |
| (func $breaks (type $3) |
| (block $out |
| (block |
| (drop |
| (block $block0 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| ) |
| (br $out) |
| ) |
| (br_if $out |
| (block $block1 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| ) |
| (block |
| (drop |
| (block $block2 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| ) |
| (br_if $out |
| (block $block3 i32 |
| (drop |
| (i32.const 30) |
| ) |
| (i32.const 40) |
| ) |
| ) |
| ) |
| (br_table $out $out |
| (block $block4 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| ) |
| (drop |
| (block $out2 i32 |
| (br_table $out2 $out2 |
| (block $block5 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| (block $block6 i32 |
| (drop |
| (i32.const 30) |
| ) |
| (i32.const 40) |
| ) |
| ) |
| ) |
| ) |
| (unreachable) |
| ) |
| ) |
| (func $calls (type $3) |
| (call $call-i |
| (block $block0 i32 |
| (i32.const 10) |
| ) |
| ) |
| (call $call-i |
| (block $block1 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| ) |
| (call $call-i |
| (block $block2 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (drop |
| (i32.const 20) |
| ) |
| (i32.const 30) |
| ) |
| ) |
| (call $call-ii |
| (block $block3 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| (block $block4 i32 |
| (drop |
| (i32.const 30) |
| ) |
| (i32.const 40) |
| ) |
| ) |
| (call $call-ii |
| (block $block5 i32 |
| (unreachable) |
| (i32.const 10) |
| ) |
| (block $block6 i32 |
| (drop |
| (i32.const 20) |
| ) |
| (i32.const 30) |
| ) |
| ) |
| (call $call-ii |
| (block $block7 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (unreachable) |
| ) |
| (block $block8 i32 |
| (drop |
| (i32.const 20) |
| ) |
| (i32.const 30) |
| ) |
| ) |
| (call $call-ii |
| (block $block9 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| (block $block10 i32 |
| (unreachable) |
| (i32.const 30) |
| ) |
| ) |
| (call $call-ii |
| (block $block11 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| (block $block12 i32 |
| (drop |
| (i32.const 30) |
| ) |
| (unreachable) |
| ) |
| ) |
| (call $call-iii |
| (block $block13 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| (block $block14 i32 |
| (drop |
| (i32.const 30) |
| ) |
| (i32.const 40) |
| ) |
| (block $block15 i32 |
| (drop |
| (i32.const 50) |
| ) |
| (i32.const 60) |
| ) |
| ) |
| (call $call-iii |
| (block $block16 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| (i32.const 30) |
| (block $block17 i32 |
| (drop |
| (i32.const 40) |
| ) |
| (i32.const 50) |
| ) |
| ) |
| (call_indirect $ii |
| (block $block18 i32 |
| (drop |
| (i32.const 10) |
| ) |
| (i32.const 20) |
| ) |
| (block $block19 i32 |
| (drop |
| (i32.const 30) |
| ) |
| (i32.const 40) |
| ) |
| (block $block20 i32 |
| (drop |
| (i32.const 50) |
| ) |
| (i32.const 60) |
| ) |
| ) |
| (call_indirect $ii |
| (unreachable) |
| (block $block21 i32 |
| (drop |
| (i32.const 30) |
| ) |
| (i32.const 40) |
| ) |
| (block $block22 i32 |
| (drop |
| (i32.const 50) |
| ) |
| (i32.const 60) |
| ) |
| ) |
| ) |
| (func $block-type-change (type $3) |
| (local $0 f64) |
| (local $1 f64) |
| (if |
| (f64.gt |
| (get_local $0) |
| (block $block0 f64 |
| (nop) |
| (get_local $1) |
| ) |
| ) |
| (nop) |
| ) |
| ) |
| (func $do-reorder (param $x i32) |
| (local $y i32) |
| (if (i32.const 1) |
| (block |
| (set_local $x |
| (i32.le_u |
| (get_local $x) |
| (block i32 |
| (set_local $y (i32.const 5)) |
| (i32.const 10) |
| ) |
| ) |
| ) |
| ) |
| ) |
| ) |
| (func $do-not-reorder (param $x i32) |
| (local $y i32) |
| (if (i32.const 1) |
| (block |
| (set_local $x |
| (i32.le_u |
| (get_local $y) |
| (block i32 |
| (set_local $y (i32.const 5)) |
| (i32.const 10) |
| ) |
| ) |
| ) |
| ) |
| ) |
| ) |
| (func $return-different-type (result i32) |
| (drop |
| (f64.abs |
| (return |
| (block i32 ;; when we flip the block out, it should have an ok type for the (dead) f64 op |
| (drop (i32.const 2)) |
| (i32.const 1) |
| ) |
| ) |
| ) |
| ) |
| (unreachable) |
| ) |
| ) |