blob: 919d8f3e7fd7f5a2752ced6618da927968df0b26 [file] [edit]
(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)
)
)