blob: 50f34c7b23c475c124376ecc121a47b94214542b [file] [log] [blame]
(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)))
(table 1 1 anyfunc)
(elem (i32.const 0) $call-i)
(memory $0 256 256)
(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)
(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
(br $topmost)
)
)
(func $b1-yes (type $i) (param $i1 i32)
(drop
(i32.const 10)
)
)
(func $b2-yes (type $i) (param $i1 i32)
(drop
(i32.const 5)
)
(drop
(i32.const 10)
)
(drop
(i32.const 15)
)
)
(func $b3-yes (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 (type $i) (param $i1 i32)
(block $inner
(drop
(i32.const 10)
)
(br $inner)
)
)
(func $b5 (type $i) (param $i1 i32)
(block $middle
(block $inner
(drop
(i32.const 10)
)
(br $inner)
)
(br $middle)
)
)
(func $b6 (type $i) (param $i1 i32)
(drop
(i32.const 5)
)
(block $inner
(drop
(i32.const 10)
)
(br $inner)
)
(drop
(i32.const 15)
)
)
(func $b7 (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 (type $3)
(local $x i32)
(drop
(i32.eqz
(block 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)
)
)
(drop
(i32.const 10)
)
(return
(unreachable)
)
)
(func $binary (type $3)
(drop
(i32.add
(block 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 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 i32
(i32.const 10)
)
(block 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 i32
(drop
(i32.const 10)
)
(i32.const 20)
)
)
)
(unreachable)
(drop
(i32.const 20)
)
(drop
(i32.add
(i32.const 10)
(i32.const 30)
)
)
)
(func $trinary (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 i32
(i32.const 10)
)
(i32.const 30)
(i32.const 50)
)
)
(drop
(i32.const 10)
)
(drop
(i32.const 40)
)
(drop
(select
(i32.const 20)
(block i32
(i32.const 30)
)
(i32.const 50)
)
)
(drop
(i32.const 10)
)
(drop
(i32.const 30)
)
(drop
(select
(i32.const 20)
(i32.const 40)
(block i32
(i32.const 50)
)
)
)
(drop
(i32.const 30)
)
(drop
(select
(block i32
(i32.const 10)
)
(block i32
(i32.const 20)
)
(i32.const 40)
)
)
(drop
(i32.const 20)
)
(drop
(select
(block i32
(i32.const 10)
)
(i32.const 30)
(block i32
(i32.const 40)
)
)
)
(drop
(i32.const 10)
)
(drop
(select
(i32.const 20)
(block i32
(i32.const 30)
)
(block i32
(i32.const 40)
)
)
)
(unreachable)
(drop
(i32.const 30)
)
(drop
(i32.const 50)
)
(drop
(select
(i32.const 20)
(i32.const 40)
(i32.const 60)
)
)
(drop
(i32.const 10)
)
(drop
(select
(unreachable)
(block i32
(drop
(i32.const 30)
)
(i32.const 40)
)
(block i32
(drop
(i32.const 50)
)
(i32.const 60)
)
)
)
(drop
(i32.const 10)
)
(drop
(select
(i32.const 20)
(block i32
(unreachable)
(i32.const 40)
)
(block i32
(drop
(i32.const 50)
)
(i32.const 60)
)
)
)
(drop
(i32.const 10)
)
(drop
(select
(i32.const 20)
(block i32
(drop
(i32.const 30)
)
(unreachable)
)
(block 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 i32
(unreachable)
(i32.const 60)
)
)
)
(drop
(i32.const 10)
)
(drop
(i32.const 30)
)
(drop
(select
(i32.const 20)
(i32.const 40)
(block i32
(drop
(i32.const 50)
)
(unreachable)
)
)
)
)
(func $breaks (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 i32
(drop
(i32.const 10)
)
(drop
(i32.const 30)
)
(br_table $out2 $out2
(i32.const 20)
(i32.const 40)
)
)
)
(unreachable)
)
)
(func $calls (type $3)
(call $call-i
(block 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)
)
(unreachable)
(drop
(i32.const 20)
)
(call $call-ii
(i32.const 10)
(i32.const 30)
)
(drop
(i32.const 10)
)
(call $call-ii
(unreachable)
(block i32
(drop
(i32.const 20)
)
(i32.const 30)
)
)
(drop
(i32.const 10)
)
(unreachable)
(call $call-ii
(i32.const 20)
(i32.const 30)
)
(drop
(i32.const 10)
)
(drop
(i32.const 30)
)
(call $call-ii
(i32.const 20)
(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 50)
)
(drop
(i32.const 10)
)
(drop
(i32.const 30)
)
(call_indirect $ii
(i32.const 20)
(i32.const 40)
(i32.const 60)
)
(drop
(i32.const 50)
)
(call_indirect $ii
(unreachable)
(block i32
(drop
(i32.const 30)
)
(i32.const 40)
)
(i32.const 60)
)
)
(func $block-type-change (type $3)
(local $0 f64)
(local $1 f64)
(if
(block i32
(nop)
(f64.gt
(get_local $0)
(get_local $1)
)
)
(nop)
)
)
(func $do-reorder (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 (type $i) (param $x i32)
(local $y i32)
(if
(i32.const 1)
(set_local $x
(i32.le_u
(get_local $y)
(block i32
(set_local $y
(i32.const 5)
)
(i32.const 10)
)
)
)
)
)
(func $return-different-type (type $4) (result i32)
(drop
(i32.const 2)
)
(drop
(f64.abs
(return
(i32.const 1)
)
)
)
(unreachable)
)
)