blob: 38c74ff568eae90e7affac484dabcfa4499c4ebe [file] [edit]
(module
(func $trivial
(nop)
)
(func $trivial2
(call $trivial)
(call $trivial)
)
(func $return-void
(return)
)
(func $return-val (result i32)
(return (i32.const 1))
)
(func $ifs (param $x i32) (result i32)
(if
(get_local $x)
(if
(get_local $x)
(return (i32.const 2))
(return (i32.const 3))
)
)
(if
(get_local $x)
(return (i32.const 4))
)
(return (i32.const 5))
)
(func $loops (param $x i32)
(if (get_local $x)
(loop $top
(call $trivial)
(br $top)
)
)
(loop $top2
(call $trivial)
(br_if $top2 (get_local $x))
)
(loop $top3
(call $trivial)
(if (get_local $x) (br $top3))
)
)
(func $br-out (param $x i32)
(block $out
(call $br-out (i32.const 5))
(br $out)
)
)
(func $unreachable (param $x i32)
(if (get_local $x)
(if (get_local $x)
(block
(call $unreachable (i32.const 1))
(unreachable)
(call $unreachable (i32.const 2))
)
(block
(call $unreachable (i32.const 3))
(return)
(call $unreachable (i32.const 4))
)
)
)
(block $out
(call $unreachable (i32.const 5))
(br $out)
(call $unreachable (i32.const 6))
)
)
(func $empty-blocks (param $x i32)
(block)
(block)
)
(func $before-and-after (param $x i32)
(call $before-and-after (i32.const 1))
(block
(call $before-and-after (i32.const 2))
)
(call $before-and-after (i32.const 3))
(block $out
(call $before-and-after (i32.const 4))
(br_if $out (get_local $x))
(call $before-and-after (i32.const 5))
)
(call $before-and-after (i32.const 6))
(loop)
(call $before-and-after (i32.const 7))
(loop $top)
(call $before-and-after (i32.const 8))
(loop $top2
(call $before-and-after (i32.const 9))
(br_if $top2 (get_local $x))
(call $before-and-after (i32.const 10))
)
(call $before-and-after (i32.const 11))
(if (get_local $x)
(call $before-and-after (i32.const 12))
)
(call $before-and-after (i32.const 13))
(if (get_local $x)
(call $before-and-after (i32.const 14))
(call $before-and-after (i32.const 15))
)
(if (get_local $x)
(block
(call $before-and-after (i32.const 16))
)
)
(call $before-and-after (i32.const 17))
(block
(call $before-and-after (i32.const 18))
(block
(call $before-and-after (i32.const 19))
)
(call $before-and-after (i32.const 20))
)
(call $before-and-after (i32.const 21))
(block
(block
(call $before-and-after (i32.const 22))
)
)
(call $before-and-after (i32.const 23))
(block $no1
(block $no2
(call $before-and-after (i32.const 24))
)
)
(call $before-and-after (i32.const 25))
)
(func $switch (param $x i32)
(block $out
(block $a
(br_table $a $a (get_local $x))
)
(call $switch (i32.const 1))
(block $b
(block $c
(br_table $b $b $b $c (get_local $x))
)
(call $switch (i32.const 2))
)
(call $switch (i32.const 3))
)
)
(func $no-return
(if (i32.const 1)
(drop (i32.const 2))
(drop (i32.const 3))
)
)
(func $if-br-wat (param $x i32)
(call $if-br-wat
(i32.const 0)
)
(block $label$2
(if
(get_local $x)
(call $if-br-wat
(i32.const 1)
)
(if
(get_local $x)
(br $label$2) ;; waka
)
)
(call $if-br-wat
(i32.const 2)
)
)
(call $if-br-wat
(i32.const 3)
)
)
)