| (module |
| (func $zed (param i32) |
| (call $zed (local.get 0)) |
| ) |
| (func $foo1 (export "foo1") (param $x i32) |
| (block $a |
| (block $b |
| (block $c |
| (block $d |
| (block $e |
| (br_table $a $b $c $d $e (local.get $x)) |
| ) |
| (call $zed (i32.const -1)) |
| (call $zed (i32.const -2)) |
| ;; implicit fallthrough - can be done in the switch too |
| ) |
| (call $zed (i32.const -3)) |
| (call $zed (i32.const -4)) |
| (br $c) ;; branch which is identical to a fallthrough |
| ) |
| (call $zed (i32.const -5)) |
| (call $zed (i32.const -6)) |
| (br $a) ;; skip some blocks - can't do this in a switch! |
| ) |
| (call $zed (i32.const -7)) |
| (call $zed (i32.const -8)) |
| (br $a) |
| ) |
| (call $zed (i32.const -9)) |
| (call $zed (i32.const -10)) |
| ) |
| (func $foo2 (export "foo2") (param $x i32) |
| (block $a |
| (block $b |
| (block $c |
| (block $d |
| (block $e |
| (br_table $a $b $c $d $e (local.get $x)) |
| ) |
| (call $zed (i32.const -1)) |
| (call $zed (i32.const -2)) |
| (br $c) ;; skip some blocks - can't do this in a switch! |
| ) |
| (call $zed (i32.const -3)) |
| (call $zed (i32.const -4)) |
| (br $c) ;; branch which is identical to a fallthrough |
| ) |
| (call $zed (i32.const -5)) |
| (call $zed (i32.const -6)) |
| (br $a) ;; skip some blocks - can't do this in a switch! |
| ) |
| (call $zed (i32.const -7)) |
| (call $zed (i32.const -8)) |
| (br $a) |
| ) |
| (call $zed (i32.const -9)) |
| (call $zed (i32.const -10)) |
| ) |
| (func $foo3 (export "foo3") (param $x i32) |
| (block $a |
| (block $b |
| (block $c |
| (block $d |
| (block $e |
| (br_table $a $b $c $d $e (local.get $x)) |
| ) |
| (br_if $c (local.get $x)) |
| (call $zed (i32.const -1)) |
| (call $zed (i32.const -2)) |
| ) |
| (call $zed (i32.const -3)) |
| (call $zed (i32.const -4)) |
| (br $c) ;; branch which is identical to a fallthrough |
| ) |
| (call $zed (i32.const -5)) |
| (call $zed (i32.const -6)) |
| (br $a) ;; skip some blocks - can't do this in a switch! |
| ) |
| (call $zed (i32.const -7)) |
| (call $zed (i32.const -8)) |
| (br $a) |
| ) |
| (call $zed (i32.const -9)) |
| (call $zed (i32.const -10)) |
| ) |
| (func $foo4 (export "foo4") (param $x i32) |
| (block $a |
| (block $b |
| (block $c |
| (block $d |
| (br_if $c (local.get $x)) |
| (block $e |
| (br_table $a $b $c $d $e (local.get $x)) |
| ) |
| (br_if $c (local.get $x)) |
| (call $zed (i32.const -1)) |
| (call $zed (i32.const -2)) |
| ) |
| (call $zed (i32.const -3)) |
| (call $zed (i32.const -4)) |
| (br $c) ;; branch which is identical to a fallthrough |
| ) |
| (call $zed (i32.const -5)) |
| (call $zed (i32.const -6)) |
| (br $a) ;; skip some blocks - can't do this in a switch! |
| ) |
| (call $zed (i32.const -7)) |
| (call $zed (i32.const -8)) |
| (br $a) |
| ) |
| (call $zed (i32.const -9)) |
| (call $zed (i32.const -10)) |
| ) |
| ) |