(module (type $i (func (param i32))) (type $ii (func (param i32 i32))) (type $iii (func (param i32 i32 i32))) (type $3 (func)) (type $4 (func (result i32))) (type $5 (func (result f64))) (table 1 1 anyfunc) (elem (i32.const 0) $call-i) (memory $0 (shared 256 256)) (func $call-i (; 0 ;) (type $i) (param $0 i32) (nop) ) (func $call-ii (; 1 ;) (type $ii) (param $0 i32) (param $1 i32) (nop) ) (func $call-iii (; 2 ;) (type $iii) (param $0 i32) (param $1 i32) (param $2 i32) (nop) ) (func $b0-yes (; 3 ;) (type $i) (param $i1 i32) (drop (i32.const 10) ) ) (func $b0-no (; 4 ;) (type $i) (param $i1 i32) (block $topmost (block $block0 (br $block0) ) (br $topmost) ) ) (func $b0-br-but-ok (; 5 ;) (type $i) (param $i1 i32) (block $topmost (br $topmost) ) ) (func $b1-yes (; 6 ;) (type $i) (param $i1 i32) (drop (i32.const 10) ) ) (func $b2-yes (; 7 ;) (type $i) (param $i1 i32) (drop (i32.const 5) ) (drop (i32.const 10) ) (drop (i32.const 15) ) ) (func $b3-yes (; 8 ;) (type $i) (param $i1 i32) (drop (i32.const 3) ) (drop (i32.const 6) ) (drop (i32.const 10) ) (drop (i32.const 15) ) (drop (i32.const 20) ) ) (func $b4 (; 9 ;) (type $i) (param $i1 i32) (block $inner (drop (i32.const 10) ) (br $inner) ) ) (func $b5 (; 10 ;) (type $i) (param $i1 i32) (block $middle (block $inner (drop (i32.const 10) ) (br $inner) ) (br $middle) ) ) (func $b6 (; 11 ;) (type $i) (param $i1 i32) (drop (i32.const 5) ) (block $inner (drop (i32.const 10) ) (br $inner) ) (drop (i32.const 15) ) ) (func $b7 (; 12 ;) (type $i) (param $i1 i32) (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 (; 13 ;) (type $3) (local $x i32) (drop (i32.eqz (block (result i32) (i32.const 10) ) ) ) (drop (i32.const 10) ) (drop (i32.eqz (i32.const 20) ) ) (drop (i32.const 10) ) (drop (i32.const 20) ) (drop (i32.eqz (i32.const 30) ) ) (drop (i32.const 10) ) (set_local $x (i32.const 20) ) (drop (i32.const 10) ) (drop (i32.load (i32.const 20) ) ) (return (block (drop (i32.const 10) ) (unreachable) ) ) ) (func $binary (; 14 ;) (type $3) (drop (i32.add (block (result i32) (i32.const 10) ) (i32.const 20) ) ) (drop (i32.const 10) ) (drop (i32.add (i32.const 20) (i32.const 30) ) ) (drop (i32.const 10) ) (drop (i32.const 20) ) (drop (i32.add (i32.const 30) (i32.const 40) ) ) (drop (i32.add (i32.const 10) (block (result i32) (i32.const 20) ) ) ) (drop (i32.const 20) ) (drop (i32.add (i32.const 10) (i32.const 30) ) ) (drop (i32.const 20) ) (drop (i32.const 30) ) (drop (i32.add (i32.const 10) (i32.const 40) ) ) (drop (i32.add (block (result i32) (i32.const 10) ) (block (result i32) (i32.const 20) ) ) ) (drop (i32.const 10) ) (drop (i32.const 30) ) (drop (i32.add (i32.const 20) (i32.const 40) ) ) (drop (i32.const 10) ) (drop (i32.const 20) ) (drop (i32.const 40) ) (drop (i32.const 50) ) (drop (i32.add (i32.const 30) (i32.const 60) ) ) (drop (i32.const 20) ) (i32.store (i32.const 10) (i32.const 30) ) (drop (i32.const 10) ) (i32.store (i32.const 20) (i32.const 30) ) (drop (i32.add (unreachable) (block (result i32) (drop (i32.const 10) ) (i32.const 20) ) ) ) (drop (block (result i32) (unreachable) (drop (i32.const 20) ) (i32.add (i32.const 10) (i32.const 30) ) ) ) ) (func $trinary (; 15 ;) (type $3) (drop (i32.const 10) ) (drop (i32.const 30) ) (drop (i32.const 50) ) (drop (select (i32.const 20) (i32.const 40) (i32.const 60) ) ) (drop (i32.const 20) ) (drop (i32.const 40) ) (drop (select (block (result i32) (i32.const 10) ) (i32.const 30) (i32.const 50) ) ) (drop (i32.const 10) ) (drop (i32.const 40) ) (drop (select (i32.const 20) (block (result i32) (i32.const 30) ) (i32.const 50) ) ) (drop (i32.const 10) ) (drop (i32.const 30) ) (drop (select (i32.const 20) (i32.const 40) (block (result i32) (i32.const 50) ) ) ) (drop (i32.const 30) ) (drop (select (block (result i32) (i32.const 10) ) (block (result i32) (i32.const 20) ) (i32.const 40) ) ) (drop (i32.const 20) ) (drop (select (block (result i32) (i32.const 10) ) (i32.const 30) (block (result i32) (i32.const 40) ) ) ) (drop (i32.const 10) ) (drop (select (i32.const 20) (block (result i32) (i32.const 30) ) (block (result i32) (i32.const 40) ) ) ) (drop (select (block (result i32) (unreachable) (i32.const 20) ) (block (result i32) (drop (i32.const 30) ) (i32.const 40) ) (block (result i32) (drop (i32.const 50) ) (i32.const 60) ) ) ) (drop (select (block (result i32) (drop (i32.const 10) ) (unreachable) ) (block (result i32) (drop (i32.const 30) ) (i32.const 40) ) (block (result i32) (drop (i32.const 50) ) (i32.const 60) ) ) ) (drop (i32.const 10) ) (drop (select (i32.const 20) (block (result i32) (unreachable) (i32.const 40) ) (block (result i32) (drop (i32.const 50) ) (i32.const 60) ) ) ) (drop (i32.const 10) ) (drop (select (i32.const 20) (block (result i32) (drop (i32.const 30) ) (unreachable) ) (block (result i32) (drop (i32.const 50) ) (i32.const 60) ) ) ) (drop (i32.const 10) ) (drop (i32.const 30) ) (drop (select (i32.const 20) (i32.const 40) (block (result i32) (unreachable) (i32.const 60) ) ) ) (drop (i32.const 10) ) (drop (i32.const 30) ) (drop (select (i32.const 20) (i32.const 40) (block (result i32) (drop (i32.const 50) ) (unreachable) ) ) ) ) (func $breaks (; 16 ;) (type $3) (block $out (drop (i32.const 10) ) (drop (i32.const 20) ) (br $out) (drop (i32.const 10) ) (br_if $out (i32.const 20) ) (drop (i32.const 10) ) (drop (i32.const 20) ) (drop (i32.const 30) ) (br_if $out (i32.const 40) ) (drop (i32.const 10) ) (br_table $out $out (i32.const 20) ) (drop (block $out2 (result i32) (drop (i32.const 10) ) (drop (i32.const 30) ) (br_table $out2 $out2 (i32.const 20) (i32.const 40) ) ) ) (unreachable) ) ) (func $calls (; 17 ;) (type $3) (call $call-i (block (result i32) (i32.const 10) ) ) (drop (i32.const 10) ) (call $call-i (i32.const 20) ) (drop (i32.const 10) ) (drop (i32.const 20) ) (call $call-i (i32.const 30) ) (drop (i32.const 10) ) (drop (i32.const 30) ) (call $call-ii (i32.const 20) (i32.const 40) ) (call $call-ii (block (result i32) (unreachable) (i32.const 10) ) (block (result i32) (drop (i32.const 20) ) (i32.const 30) ) ) (call $call-ii (block (result i32) (drop (i32.const 10) ) (unreachable) ) (block (result i32) (drop (i32.const 20) ) (i32.const 30) ) ) (drop (i32.const 10) ) (call $call-ii (i32.const 20) (block (result i32) (unreachable) (i32.const 30) ) ) (drop (i32.const 10) ) (call $call-ii (i32.const 20) (block (result i32) (drop (i32.const 30) ) (unreachable) ) ) (drop (i32.const 10) ) (drop (i32.const 30) ) (drop (i32.const 50) ) (call $call-iii (i32.const 20) (i32.const 40) (i32.const 60) ) (drop (i32.const 10) ) (drop (i32.const 40) ) (call $call-iii (i32.const 20) (i32.const 30) (i32.const 50) ) (drop (i32.const 10) ) (drop (i32.const 30) ) (drop (i32.const 50) ) (call_indirect (type $ii) (i32.const 20) (i32.const 40) (i32.const 60) ) (call_indirect (type $ii) (unreachable) (block (result i32) (drop (i32.const 30) ) (i32.const 40) ) (block (result i32) (drop (i32.const 50) ) (i32.const 60) ) ) (drop (i32.const 31) ) (call_indirect (type $ii) (i32.const 41) (unreachable) (block (result i32) (drop (i32.const 51) ) (i32.const 61) ) ) (drop (i32.const 32) ) (drop (i32.const 52) ) (call_indirect (type $ii) (i32.const 42) (i32.const 62) (unreachable) ) ) (func $atomics (; 18 ;) (type $3) (drop (i32.const 10) ) (drop (i32.const 30) ) (drop (i32.const 50) ) (drop (i32.atomic.rmw.cmpxchg (i32.const 20) (i32.const 40) (i32.const 60) ) ) (drop (i32.const 10) ) (drop (i32.atomic.rmw.add (i32.const 20) (i32.const 30) ) ) ) (func $mix-select (; 19 ;) (type $i) (param $x i32) (drop (select (get_local $x) (get_local $x) (block (result i32) (set_local $x (i32.const 1) ) (i32.const 2) ) ) ) ) (func $block-type-change (; 20 ;) (type $3) (local $0 f64) (local $1 f64) (if (block (result i32) (nop) (f64.gt (get_local $0) (get_local $1) ) ) (nop) ) ) (func $do-reorder (; 21 ;) (type $i) (param $x i32) (local $y i32) (if (i32.const 1) (block (set_local $y (i32.const 5) ) (set_local $x (i32.le_u (get_local $x) (i32.const 10) ) ) ) ) ) (func $do-not-reorder (; 22 ;) (type $i) (param $x i32) (local $y i32) (if (i32.const 1) (set_local $x (i32.le_u (get_local $y) (block (result i32) (set_local $y (i32.const 5) ) (i32.const 10) ) ) ) ) ) (func $return-different-type (; 23 ;) (type $4) (result i32) (drop (f64.abs (block (drop (i32.const 2) ) (return (i32.const 1) ) ) ) ) (unreachable) ) (func $drop-unreachable (; 24 ;) (type $4) (result i32) (local $0 i32) (drop (block (result i32) (unreachable) ) ) (unreachable) ) (func $concrete_finale_in_unreachable (; 25 ;) (type $5) (result f64) (drop (block (result f64) (unreachable) (f64.const 6.322092475576799e-96) ) ) (f64.const -1) ) (func $dont-move-unreachable (; 26 ;) (type $3) (loop $label$0 (drop (block (result i32) (br $label$0) (i32.const 1) ) ) ) ) (func $dont-move-unreachable-last (; 27 ;) (type $3) (loop $label$0 (drop (block (result i32) (call $dont-move-unreachable-last) (br $label$0) ) ) ) ) (func $move-around-unreachable-in-middle (; 28 ;) (type $3) (loop $label$0 (nop) (drop (block $label$3 (result i32) (drop (br_if $label$3 (br $label$0) (i32.const 0) ) ) (i32.const 1) ) ) ) ) (func $drop-unreachable-block-with-concrete-final (; 29 ;) (type $3) (drop (block (result i32) (drop (block (drop (return) ) ) ) (i32.const -452) ) ) ) (func $merging-with-unreachable-in-middle (; 30 ;) (type $4) (result i32) (return (i32.const 21536) ) (block $label$15 (br $label$15) ) (i32.const 19299) ) (func $remove-br-after-unreachable (; 31 ;) (type $3) (block $label$9 (drop (block (return) (br $label$9) ) ) ) ) (func $block-tails (; 32 ;) (type $3) (block $l1 (drop (i32.const -2) ) (drop (i32.const -1) ) (br $l1) (drop (i32.const 0) ) (drop (i32.const 1) ) ) (block $l2 (br_if $l2 (i32.const 2) ) (drop (i32.const 3) ) ) (block $l3 (br_if $l3 (i32.const 4) ) (br_if $l3 (i32.const 5) ) (drop (i32.const 6) ) ) (block $l4 (br_if $l4 (i32.const 7) ) (br_if $l4 (i32.const 8) ) (drop (i32.const 9) ) ) (block $l5 (if (i32.const 10) (br_if $l5 (i32.const 11) ) ) (drop (i32.const 12) ) ) (block $l8 (br_if $l8 (i32.const 13) ) (br_if $l8 (i32.const 14) ) (br_if $l8 (i32.const 15) ) (drop (i32.const 16) ) ) (block $l11 (br_if $l11 (i32.const 17) ) (br_if $l11 (i32.const 18) ) (br_if $l11 (i32.const 19) ) (drop (i32.const 20) ) ) (block $l12 (block $l13 (block $l14 (br_if $l12 (i32.const 21) ) (br_if $l13 (i32.const 22) ) (br_if $l14 (i32.const 23) ) (drop (i32.const 24) ) ) (drop (i32.const 25) ) ) (drop (i32.const 26) ) ) (block $l15 (block $l16 (block $l17 (drop (i32.const 27) ) (br_if $l17 (i32.const 28) ) (drop (i32.const 29) ) ) (br_if $l16 (i32.const 30) ) (drop (i32.const 31) ) ) (br_if $l15 (i32.const 32) ) (drop (i32.const 33) ) ) ) (func $loop-tails (; 33 ;) (type $3) (loop $l1 (drop (i32.const -2) ) (drop (i32.const -1) ) (br $l1) ) (drop (i32.const 0) ) (drop (i32.const 1) ) (loop $l2 (br_if $l2 (i32.const 2) ) ) (drop (i32.const 3) ) (block $b1 (loop $l3 (br_if $b1 (i32.const 4) ) (br_if $l3 (i32.const 5) ) ) (drop (i32.const 6) ) ) (block $b2 (loop $l4 (br_if $l4 (i32.const 7) ) ) (br_if $b2 (i32.const 8) ) (drop (i32.const 9) ) ) (loop $l5 (if (i32.const 10) (br_if $l5 (i32.const 11) ) ) ) (drop (i32.const 12) ) (loop $l6 (loop $l7 (loop $l8 (br_if $l6 (i32.const 13) ) (br_if $l7 (i32.const 14) ) (br_if $l8 (i32.const 15) ) (drop (i32.const 16) ) ) ) ) (loop $l9 (loop $l10 (loop $l11 (br_if $l11 (i32.const 17) ) (br_if $l10 (i32.const 18) ) (br_if $l9 (i32.const 19) ) (drop (i32.const 20) ) ) ) ) (loop $l12 (loop $l13 (loop $l14 (br_if $l12 (i32.const 21) ) (br_if $l13 (i32.const 22) ) (br_if $l14 (i32.const 23) ) ) ) ) (drop (i32.const 24) ) (drop (i32.const 25) ) (drop (i32.const 26) ) (loop $l15 (loop $l16 (loop $l17 (drop (i32.const 27) ) (br_if $l17 (i32.const 28) ) ) (drop (i32.const 29) ) (br_if $l16 (i32.const 30) ) ) (drop (i32.const 31) ) (br_if $l15 (i32.const 32) ) ) (drop (i32.const 33) ) ) (func $block-tail-one (; 34 ;) (type $3) (block $l1 (drop (i32.const -2) ) (drop (i32.const -1) ) (br $l1) (drop (i32.const 0) ) (drop (i32.const 1) ) ) (drop (i32.const 2) ) ) (func $loop-tail-one (; 35 ;) (type $3) (loop $l1 (drop (i32.const -2) ) (drop (i32.const -1) ) (br $l1) ) (drop (i32.const 0) ) (drop (i32.const 1) ) (drop (i32.const 2) ) ) (func $block-tail-value (; 36 ;) (type $4) (result i32) (block $l1 (result i32) (drop (i32.const -1) ) (br $l1 (i32.const 0) ) (drop (i32.const 1) ) (i32.const 2) ) ) (func $block-tail-empty (; 37 ;) (type $3) (block $l1 (drop (i32.const -1) ) (br $l1) ) ) (func $loop-tail-empty (; 38 ;) (type $3) (loop $l1 (drop (i32.const -1) ) (br $l1) ) ) (func $block-tail-unreachable (; 39 ;) (type $4) (result i32) (block $l1 (result i32) (drop (i32.const -1) ) (drop (br_if $l1 (i32.const 0) (i32.const 1) ) ) (drop (i32.const 1) ) (unreachable) ) ) (func $loop-tail-unreachable (; 40 ;) (type $4) (result i32) (loop $l1 (drop (i32.const -1) ) (br_if $l1 (i32.const 1) ) ) (drop (i32.const 1) ) (unreachable) ) )