| (module |
| (type $0 (func (param i32))) |
| (type $1 (func (param i32) (result i32))) |
| (type $2 (func (param i32 i32) (result i32))) |
| (type $3 (func (param i32 i32 i32) (result i32))) |
| (func $basic (; 0 ;) (type $0) (param $p i32) |
| (local $x i32) |
| (set_local $x |
| (i32.const 10) |
| ) |
| (call $basic |
| (i32.const 20) |
| ) |
| ) |
| (func $split (; 1 ;) (type $0) (param $p i32) |
| (local $x i32) |
| (if |
| (i32.const 1) |
| (set_local $x |
| (i32.const 10) |
| ) |
| ) |
| (call $basic |
| (i32.add |
| (get_local $x) |
| (get_local $x) |
| ) |
| ) |
| ) |
| (func $split-but-join (; 2 ;) (type $0) (param $p i32) |
| (local $x i32) |
| (if |
| (i32.const 1) |
| (set_local $x |
| (i32.const 10) |
| ) |
| (set_local $x |
| (i32.const 10) |
| ) |
| ) |
| (call $basic |
| (i32.const 20) |
| ) |
| ) |
| (func $split-but-join-different (; 3 ;) (type $0) (param $p i32) |
| (local $x i32) |
| (if |
| (i32.const 1) |
| (set_local $x |
| (i32.const 10) |
| ) |
| (set_local $x |
| (i32.const 20) |
| ) |
| ) |
| (call $basic |
| (i32.add |
| (get_local $x) |
| (get_local $x) |
| ) |
| ) |
| ) |
| (func $split-but-join-different-b (; 4 ;) (type $0) (param $p i32) |
| (local $x i32) |
| (if |
| (i32.const 1) |
| (set_local $x |
| (i32.const 10) |
| ) |
| (set_local $x |
| (get_local $p) |
| ) |
| ) |
| (call $basic |
| (i32.add |
| (get_local $x) |
| (get_local $x) |
| ) |
| ) |
| ) |
| (func $split-but-join-init0 (; 5 ;) (type $0) (param $p i32) |
| (local $x i32) |
| (if |
| (i32.const 1) |
| (set_local $x |
| (i32.const 0) |
| ) |
| ) |
| (call $basic |
| (i32.const 0) |
| ) |
| ) |
| (func $later (; 6 ;) (type $0) (param $p i32) |
| (local $x i32) |
| (set_local $x |
| (i32.const 10) |
| ) |
| (call $basic |
| (i32.const 20) |
| ) |
| (set_local $x |
| (i32.const 22) |
| ) |
| (call $basic |
| (i32.const 44) |
| ) |
| (set_local $x |
| (i32.const 39) |
| ) |
| ) |
| (func $later2 (; 7 ;) (type $1) (param $p i32) (result i32) |
| (local $x i32) |
| (set_local $x |
| (i32.const 10) |
| ) |
| (set_local $x |
| (i32.const 20) |
| ) |
| (i32.const 20) |
| ) |
| (func $two-ways-but-identical (; 8 ;) (type $1) (param $p i32) (result i32) |
| (local $x i32) |
| (local $y i32) |
| (set_local $x |
| (i32.const 10) |
| ) |
| (if |
| (i32.const 1) |
| (set_local $y |
| (i32.const 11) |
| ) |
| (set_local $y |
| (i32.const 11) |
| ) |
| ) |
| (set_local $y |
| (i32.const 21) |
| ) |
| (i32.const 21) |
| ) |
| (func $two-ways-but-almost-identical (; 9 ;) (type $1) (param $p i32) (result i32) |
| (local $x i32) |
| (local $y i32) |
| (set_local $x |
| (i32.const 10) |
| ) |
| (if |
| (i32.const 1) |
| (set_local $y |
| (i32.const 12) |
| ) |
| (set_local $y |
| (i32.const 11) |
| ) |
| ) |
| (set_local $y |
| (i32.add |
| (i32.const 10) |
| (get_local $y) |
| ) |
| ) |
| (get_local $y) |
| ) |
| (func $deadloop (; 10 ;) (type $1) (param $p i32) (result i32) |
| (local $x i32) |
| (local $y i32) |
| (loop $loop |
| (set_local $x |
| (i32.const 0) |
| ) |
| (set_local $y |
| (i32.const 0) |
| ) |
| (br $loop) |
| ) |
| ) |
| (func $deadloop2 (; 11 ;) (type $0) (param $p i32) |
| (local $x i32) |
| (local $y i32) |
| (loop $loop |
| (set_local $x |
| (i32.const 0) |
| ) |
| (set_local $y |
| (i32.const 0) |
| ) |
| (call $deadloop2 |
| (i32.const 0) |
| ) |
| (call $deadloop2 |
| (i32.const 0) |
| ) |
| (br $loop) |
| ) |
| ) |
| (func $deadloop3 (; 12 ;) (type $0) (param $p i32) |
| (local $x i32) |
| (local $y i32) |
| (loop $loop |
| (set_local $x |
| (i32.const 0) |
| ) |
| (set_local $y |
| (i32.const 0) |
| ) |
| (call $deadloop2 |
| (i32.const 0) |
| ) |
| (call $deadloop2 |
| (i32.const 0) |
| ) |
| (br $loop) |
| ) |
| ) |
| (func $through-tee (; 13 ;) (type $2) (param $x i32) (param $y i32) (result i32) |
| (set_local $x |
| (tee_local $y |
| (i32.const 7) |
| ) |
| ) |
| (return |
| (i32.const 14) |
| ) |
| ) |
| (func $through-tee-more (; 14 ;) (type $2) (param $x i32) (param $y i32) (result i32) |
| (set_local $x |
| (i32.eqz |
| (tee_local $y |
| (i32.const 7) |
| ) |
| ) |
| ) |
| (return |
| (i32.const 7) |
| ) |
| ) |
| (func $multipass (; 15 ;) (type $3) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) |
| (local $3 i32) |
| (nop) |
| (nop) |
| (get_local $2) |
| ) |
| ) |