1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
;;! target = "x86_64"
(module
(func (result i32)
(block (result i32)
(block (result i32)
(block (result i32)
(br_table 0 1 2 3 (i32.const 42) (i32.const 0))
)
)
)
)
(func (result i32)
(block (result i32)
(block (result i32)
(block (result i32)
(br_table 3 2 1 0 (i32.const 42) (i32.const 0))
)
)
)
)
(func (result i32)
(block (result i32)
(br_table 0 0 1 1 (i32.const 42) (i32.const 0))
)
)
(func (result i32)
(block (result i32)
(br_table 1 1 0 0 (i32.const 42) (i32.const 0))
)
)
)
;; function u0:0(i64 vmctx, i64) -> i32 tail {
;; gv0 = vmctx
;; gv1 = load.i64 notrap aligned readonly gv0+8
;; gv2 = load.i64 notrap aligned gv1+16
;; stack_limit = gv2
;;
;; block0(v0: i64, v1: i64):
;; @0021 v6 = iconst.i32 42
;; @0023 v7 = iconst.i32 0
;; @0025 br_table v7, block8, [block5, block6, block7] ; v7 = 0
;;
;; block5:
;; @0025 jump block4
;;
;; block6:
;; @0025 jump block3
;;
;; block7:
;; @0025 jump block2
;;
;; block8:
;; @0025 jump block1
;;
;; block4:
;; @002c jump block3
;;
;; block3:
;; @002d jump block2
;;
;; block2:
;; @002e jump block1
;;
;; block1:
;; @002e return v6 ; v6 = 42
;; }
;;
;; function u0:1(i64 vmctx, i64) -> i32 tail {
;; gv0 = vmctx
;; gv1 = load.i64 notrap aligned readonly gv0+8
;; gv2 = load.i64 notrap aligned gv1+16
;; stack_limit = gv2
;;
;; block0(v0: i64, v1: i64):
;; @0037 v6 = iconst.i32 42
;; @0039 v7 = iconst.i32 0
;; @003b br_table v7, block8, [block5, block6, block7] ; v7 = 0
;;
;; block5:
;; @003b jump block1
;;
;; block6:
;; @003b jump block2
;;
;; block7:
;; @003b jump block3
;;
;; block8:
;; @003b jump block4
;;
;; block4:
;; @0042 jump block3
;;
;; block3:
;; @0043 jump block2
;;
;; block2:
;; @0044 jump block1
;;
;; block1:
;; @0044 return v6 ; v6 = 42
;; }
;;
;; function u0:2(i64 vmctx, i64) -> i32 tail {
;; gv0 = vmctx
;; gv1 = load.i64 notrap aligned readonly gv0+8
;; gv2 = load.i64 notrap aligned gv1+16
;; stack_limit = gv2
;;
;; block0(v0: i64, v1: i64):
;; @0049 v4 = iconst.i32 42
;; @004b v5 = iconst.i32 0
;; @004d br_table v5, block4, [block3, block3, block4] ; v5 = 0
;;
;; block3:
;; @004d jump block2
;;
;; block4:
;; @004d jump block1
;;
;; block2:
;; @0054 jump block1
;;
;; block1:
;; @0054 return v4 ; v4 = 42
;; }
;;
;; function u0:3(i64 vmctx, i64) -> i32 tail {
;; gv0 = vmctx
;; gv1 = load.i64 notrap aligned readonly gv0+8
;; gv2 = load.i64 notrap aligned gv1+16
;; stack_limit = gv2
;;
;; block0(v0: i64, v1: i64):
;; @0059 v4 = iconst.i32 42
;; @005b v5 = iconst.i32 0
;; @005d br_table v5, block4, [block3, block3, block4] ; v5 = 0
;;
;; block3:
;; @005d jump block1
;;
;; block4:
;; @005d jump block2
;;
;; block2:
;; @0064 jump block1
;;
;; block1:
;; @0064 return v4 ; v4 = 42
;; }