|
23 | 23 | ;; OPT_O: (import "env" "eqref" (global $eqref (mut eqref))) |
24 | 24 | (import "env" "eqref" (global $eqref (mut eqref))) |
25 | 25 |
|
26 | | - ;; CHECK: (import "env" "use-i32-any" (func $use-i32-any (type $14) (param i32 (ref any)))) |
27 | | - ;; OPT_O: (import "env" "use-i32-any" (func $use-i32-any (type $14) (param i32 (ref any)))) |
| 26 | + ;; CHECK: (import "env" "use-i32-any" (func $use-i32-any (type $15) (param i32 (ref any)))) |
| 27 | + ;; OPT_O: (import "env" "use-i32-any" (func $use-i32-any (type $15) (param i32 (ref any)))) |
28 | 28 | (import "env" "use-i32-any" (func $use-i32-any (param i32 (ref any)))) |
29 | 29 |
|
30 | 30 | ;; CHECK: (tag $e (param i32)) |
|
34 | 34 | ;; OPT_O: (tag $e2 (param i32)) |
35 | 35 | (tag $e2 (param i32)) |
36 | 36 |
|
37 | | - ;; CHECK: (func $br_on_null-one (type $15) (param $0 i32) (param $1 anyref) (result i32) |
| 37 | + ;; CHECK: (func $br_on_null-one (type $8) (param $0 i32) (param $1 anyref) (result i32) |
38 | 38 | ;; CHECK-NEXT: (local $scratch anyref) |
39 | 39 | ;; CHECK-NEXT: (local $scratch_3 i32) |
40 | 40 | ;; CHECK-NEXT: (local $scratch_4 i32) |
|
76 | 76 | ;; CHECK-NEXT: (local.get $scratch_3) |
77 | 77 | ;; CHECK-NEXT: ) |
78 | 78 | ;; CHECK-NEXT: ) |
79 | | - ;; OPT_O: (func $br_on_null-one (type $15) (param $0 i32) (param $1 anyref) (result i32) |
| 79 | + ;; OPT_O: (func $br_on_null-one (type $6) (param $0 i32) (param $1 anyref) (result i32) |
80 | 80 | ;; OPT_O-NEXT: (block $block (result i32) |
81 | 81 | ;; OPT_O-NEXT: (block $block0 |
82 | 82 | ;; OPT_O-NEXT: (global.set $any |
|
112 | 112 | ;; CHECK-NEXT: (local $scratch_6 (ref any)) |
113 | 113 | ;; CHECK-NEXT: (local $scratch_7 (tuple i32 i64)) |
114 | 114 | ;; CHECK-NEXT: (local $scratch_8 i32) |
115 | | - ;; CHECK-NEXT: (block $block (type $12) (result i32 i64) |
| 115 | + ;; CHECK-NEXT: (block $block (type $13) (result i32 i64) |
116 | 116 | ;; CHECK-NEXT: (block $block0 |
117 | 117 | ;; CHECK-NEXT: (local.set $scratch_4 |
118 | 118 | ;; CHECK-NEXT: (tuple.make 2 |
|
168 | 168 | ;; CHECK-NEXT: ) |
169 | 169 | ;; OPT_O: (func $br_on_null-two (type $16) (param $0 i32) (param $1 i64) (param $2 anyref) (result i32 i64) |
170 | 170 | ;; OPT_O-NEXT: (local $3 (tuple i32 i64)) |
171 | | - ;; OPT_O-NEXT: (block $block (type $10) (result i32 i64) |
| 171 | + ;; OPT_O-NEXT: (block $block (type $11) (result i32 i64) |
172 | 172 | ;; OPT_O-NEXT: (local.set $3 |
173 | 173 | ;; OPT_O-NEXT: (tuple.make 2 |
174 | 174 | ;; OPT_O-NEXT: (local.get $0) |
|
215 | 215 | end |
216 | 216 | ) |
217 | 217 |
|
218 | | - ;; CHECK: (func $br_on_non_null-one (type $8) (param $0 i32) (param $1 anyref) (result i32 (ref any)) |
| 218 | + ;; CHECK: (func $br_on_non_null-one (type $9) (param $0 i32) (param $1 anyref) (result i32 (ref any)) |
219 | 219 | ;; CHECK-NEXT: (local $scratch anyref) |
220 | 220 | ;; CHECK-NEXT: (local $scratch_3 i32) |
221 | 221 | ;; CHECK-NEXT: (local $scratch_4 i32) |
|
254 | 254 | ;; CHECK-NEXT: ) |
255 | 255 | ;; CHECK-NEXT: ) |
256 | 256 | ;; CHECK-NEXT: ) |
257 | | - ;; OPT_O: (func $br_on_non_null-one (type $6) (param $0 i32) (param $1 anyref) (result i32 (ref any)) |
| 257 | + ;; OPT_O: (func $br_on_non_null-one (type $7) (param $0 i32) (param $1 anyref) (result i32 (ref any)) |
258 | 258 | ;; OPT_O-NEXT: (block $block (type $1) (result i32 (ref any)) |
259 | 259 | ;; OPT_O-NEXT: (tuple.make 2 |
260 | 260 | ;; OPT_O-NEXT: (local.get $0) |
|
286 | 286 | end |
287 | 287 | ) |
288 | 288 |
|
289 | | - ;; CHECK: (func $br_on_non_null-two (type $9) (param $0 i32) (param $1 i64) (param $2 anyref) (result i32 i64 (ref any)) |
| 289 | + ;; CHECK: (func $br_on_non_null-two (type $10) (param $0 i32) (param $1 i64) (param $2 anyref) (result i32 i64 (ref any)) |
290 | 290 | ;; CHECK-NEXT: (local $scratch anyref) |
291 | 291 | ;; CHECK-NEXT: (local $scratch_4 (tuple i32 i64)) |
292 | 292 | ;; CHECK-NEXT: (local $scratch_5 i64) |
|
350 | 350 | ;; CHECK-NEXT: ) |
351 | 351 | ;; CHECK-NEXT: ) |
352 | 352 | ;; CHECK-NEXT: ) |
353 | | - ;; OPT_O: (func $br_on_non_null-two (type $7) (param $0 i32) (param $1 i64) (param $2 anyref) (result i32 i64 (ref any)) |
| 353 | + ;; OPT_O: (func $br_on_non_null-two (type $8) (param $0 i32) (param $1 i64) (param $2 anyref) (result i32 i64 (ref any)) |
354 | 354 | ;; OPT_O-NEXT: (block $block (type $4) (result i32 i64 (ref any)) |
355 | 355 | ;; OPT_O-NEXT: (tuple.make 3 |
356 | 356 | ;; OPT_O-NEXT: (local.get $0) |
|
484 | 484 | ;; CHECK-NEXT: (local $scratch_7 (tuple i32 i64)) |
485 | 485 | ;; CHECK-NEXT: (local $scratch_8 i32) |
486 | 486 | ;; CHECK-NEXT: (local $scratch_9 eqref) |
487 | | - ;; CHECK-NEXT: (block $block (type $13) (result i32 i64 eqref) |
| 487 | + ;; CHECK-NEXT: (block $block (type $14) (result i32 i64 eqref) |
488 | 488 | ;; CHECK-NEXT: (local.set $scratch_9 |
489 | 489 | ;; CHECK-NEXT: (block $block0 (result eqref) |
490 | 490 | ;; CHECK-NEXT: (local.set $scratch_4 |
|
550 | 550 | ;; CHECK-NEXT: ) |
551 | 551 | ;; CHECK-NEXT: ) |
552 | 552 | ;; OPT_O: (func $br_on_cast-two (type $17) (param $0 i32) (param $1 i64) (param $2 anyref) (result i32 i64 eqref) |
553 | | - ;; OPT_O-NEXT: (block $block (type $11) (result i32 i64 eqref) |
| 553 | + ;; OPT_O-NEXT: (block $block (type $12) (result i32 i64 eqref) |
554 | 554 | ;; OPT_O-NEXT: (tuple.make 3 |
555 | 555 | ;; OPT_O-NEXT: (local.get $0) |
556 | 556 | ;; OPT_O-NEXT: (local.get $1) |
|
764 | 764 | end |
765 | 765 | ) |
766 | 766 |
|
767 | | - ;; CHECK: (func $br_on_cast_fail-one (type $8) (param $0 i32) (param $1 anyref) (result i32 (ref any)) |
| 767 | + ;; CHECK: (func $br_on_cast_fail-one (type $9) (param $0 i32) (param $1 anyref) (result i32 (ref any)) |
768 | 768 | ;; CHECK-NEXT: (local $scratch anyref) |
769 | 769 | ;; CHECK-NEXT: (local $scratch_3 i32) |
770 | 770 | ;; CHECK-NEXT: (local $scratch_4 i32) |
|
815 | 815 | ;; CHECK-NEXT: ) |
816 | 816 | ;; CHECK-NEXT: ) |
817 | 817 | ;; CHECK-NEXT: ) |
818 | | - ;; OPT_O: (func $br_on_cast_fail-one (type $6) (param $0 i32) (param $1 anyref) (result i32 (ref any)) |
| 818 | + ;; OPT_O: (func $br_on_cast_fail-one (type $7) (param $0 i32) (param $1 anyref) (result i32 (ref any)) |
819 | 819 | ;; OPT_O-NEXT: (block $block (type $1) (result i32 (ref any)) |
820 | 820 | ;; OPT_O-NEXT: (tuple.make 2 |
821 | 821 | ;; OPT_O-NEXT: (local.get $0) |
|
850 | 850 | end |
851 | 851 | ) |
852 | 852 |
|
853 | | - ;; CHECK: (func $br_on_cast_fail-two (type $9) (param $0 i32) (param $1 i64) (param $2 anyref) (result i32 i64 (ref any)) |
| 853 | + ;; CHECK: (func $br_on_cast_fail-two (type $10) (param $0 i32) (param $1 i64) (param $2 anyref) (result i32 i64 (ref any)) |
854 | 854 | ;; CHECK-NEXT: (local $scratch anyref) |
855 | 855 | ;; CHECK-NEXT: (local $scratch_4 (tuple i32 i64)) |
856 | 856 | ;; CHECK-NEXT: (local $scratch_5 i64) |
|
923 | 923 | ;; CHECK-NEXT: ) |
924 | 924 | ;; CHECK-NEXT: ) |
925 | 925 | ;; CHECK-NEXT: ) |
926 | | - ;; OPT_O: (func $br_on_cast_fail-two (type $7) (param $0 i32) (param $1 i64) (param $2 anyref) (result i32 i64 (ref any)) |
| 926 | + ;; OPT_O: (func $br_on_cast_fail-two (type $8) (param $0 i32) (param $1 i64) (param $2 anyref) (result i32 i64 (ref any)) |
927 | 927 | ;; OPT_O-NEXT: (block $block (type $4) (result i32 i64 (ref any)) |
928 | 928 | ;; OPT_O-NEXT: (tuple.make 3 |
929 | 929 | ;; OPT_O-NEXT: (local.get $0) |
|
1052 | 1052 | end |
1053 | 1053 | ) |
1054 | 1054 |
|
1055 | | - ;; CHECK: (func $br_on_cast_fail-to-nn (type $10) (param $0 i32) (param $1 anyref) (result i32 anyref) |
| 1055 | + ;; CHECK: (func $br_on_cast_fail-to-nn (type $11) (param $0 i32) (param $1 anyref) (result i32 anyref) |
1056 | 1056 | ;; CHECK-NEXT: (local $scratch anyref) |
1057 | 1057 | ;; CHECK-NEXT: (local $scratch_3 i32) |
1058 | 1058 | ;; CHECK-NEXT: (local $scratch_4 i32) |
|
1103 | 1103 | ;; CHECK-NEXT: ) |
1104 | 1104 | ;; CHECK-NEXT: ) |
1105 | 1105 | ;; CHECK-NEXT: ) |
1106 | | - ;; OPT_O: (func $br_on_cast_fail-to-nn (type $8) (param $0 i32) (param $1 anyref) (result i32 anyref) |
1107 | | - ;; OPT_O-NEXT: (block $block (type $12) (result i32 anyref) |
| 1106 | + ;; OPT_O: (func $br_on_cast_fail-to-nn (type $9) (param $0 i32) (param $1 anyref) (result i32 anyref) |
| 1107 | + ;; OPT_O-NEXT: (block $block (type $13) (result i32 anyref) |
1108 | 1108 | ;; OPT_O-NEXT: (tuple.make 2 |
1109 | 1109 | ;; OPT_O-NEXT: (local.get $0) |
1110 | 1110 | ;; OPT_O-NEXT: (block $block0 (result anyref) |
|
1138 | 1138 | end |
1139 | 1139 | ) |
1140 | 1140 |
|
| 1141 | + ;; CHECK: (func $unreachable-fallthrough (type $8) (param $0 i32) (param $1 anyref) (result i32) |
| 1142 | + ;; CHECK-NEXT: (local $scratch anyref) |
| 1143 | + ;; CHECK-NEXT: (local $scratch_3 i32) |
| 1144 | + ;; CHECK-NEXT: (local $scratch_4 i32) |
| 1145 | + ;; CHECK-NEXT: (local $scratch_5 (ref any)) |
| 1146 | + ;; CHECK-NEXT: (local $scratch_6 (tuple i32 (ref any))) |
| 1147 | + ;; CHECK-NEXT: (local $scratch_7 i32) |
| 1148 | + ;; CHECK-NEXT: (local.set $scratch_7 |
| 1149 | + ;; CHECK-NEXT: (tuple.extract 2 0 |
| 1150 | + ;; CHECK-NEXT: (local.tee $scratch_6 |
| 1151 | + ;; CHECK-NEXT: (block $l (type $3) (result i32 (ref any)) |
| 1152 | + ;; CHECK-NEXT: (local.set $scratch_5 |
| 1153 | + ;; CHECK-NEXT: (block $l0 (result (ref any)) |
| 1154 | + ;; CHECK-NEXT: (local.set $scratch_3 |
| 1155 | + ;; CHECK-NEXT: (block (result i32) |
| 1156 | + ;; CHECK-NEXT: (local.set $scratch_4 |
| 1157 | + ;; CHECK-NEXT: (local.get $0) |
| 1158 | + ;; CHECK-NEXT: ) |
| 1159 | + ;; CHECK-NEXT: (local.set $scratch |
| 1160 | + ;; CHECK-NEXT: (local.get $1) |
| 1161 | + ;; CHECK-NEXT: ) |
| 1162 | + ;; CHECK-NEXT: (local.get $scratch_4) |
| 1163 | + ;; CHECK-NEXT: ) |
| 1164 | + ;; CHECK-NEXT: ) |
| 1165 | + ;; CHECK-NEXT: (br_on_non_null $l0 |
| 1166 | + ;; CHECK-NEXT: (local.get $scratch) |
| 1167 | + ;; CHECK-NEXT: ) |
| 1168 | + ;; CHECK-NEXT: (br $l |
| 1169 | + ;; CHECK-NEXT: (return |
| 1170 | + ;; CHECK-NEXT: (local.get $scratch_3) |
| 1171 | + ;; CHECK-NEXT: ) |
| 1172 | + ;; CHECK-NEXT: ) |
| 1173 | + ;; CHECK-NEXT: ) |
| 1174 | + ;; CHECK-NEXT: ) |
| 1175 | + ;; CHECK-NEXT: (tuple.make 2 |
| 1176 | + ;; CHECK-NEXT: (local.get $scratch_3) |
| 1177 | + ;; CHECK-NEXT: (local.get $scratch_5) |
| 1178 | + ;; CHECK-NEXT: ) |
| 1179 | + ;; CHECK-NEXT: ) |
| 1180 | + ;; CHECK-NEXT: ) |
| 1181 | + ;; CHECK-NEXT: ) |
| 1182 | + ;; CHECK-NEXT: ) |
| 1183 | + ;; CHECK-NEXT: (drop |
| 1184 | + ;; CHECK-NEXT: (tuple.extract 2 1 |
| 1185 | + ;; CHECK-NEXT: (local.get $scratch_6) |
| 1186 | + ;; CHECK-NEXT: ) |
| 1187 | + ;; CHECK-NEXT: ) |
| 1188 | + ;; CHECK-NEXT: (local.get $scratch_7) |
| 1189 | + ;; CHECK-NEXT: ) |
| 1190 | + ;; OPT_O: (func $unreachable-fallthrough (type $6) (param $0 i32) (param $1 anyref) (result i32) |
| 1191 | + ;; OPT_O-NEXT: (drop |
| 1192 | + ;; OPT_O-NEXT: (block $l0 (result (ref any)) |
| 1193 | + ;; OPT_O-NEXT: (br_on_non_null $l0 |
| 1194 | + ;; OPT_O-NEXT: (local.get $1) |
| 1195 | + ;; OPT_O-NEXT: ) |
| 1196 | + ;; OPT_O-NEXT: (return |
| 1197 | + ;; OPT_O-NEXT: (local.get $0) |
| 1198 | + ;; OPT_O-NEXT: ) |
| 1199 | + ;; OPT_O-NEXT: ) |
| 1200 | + ;; OPT_O-NEXT: ) |
| 1201 | + ;; OPT_O-NEXT: (local.get $0) |
| 1202 | + ;; OPT_O-NEXT: ) |
| 1203 | + (func $unreachable-fallthrough (export "unreachable-fallthrough") (param i32 anyref) (result i32) |
| 1204 | + block $l (result i32 (ref any)) |
| 1205 | + local.get 0 |
| 1206 | + local.get 1 |
| 1207 | + br_on_non_null $l |
| 1208 | + return |
| 1209 | + end |
| 1210 | + drop |
| 1211 | + ) |
| 1212 | + |
1141 | 1213 | ;; CHECK: (func $matching-branches (type $21) (param $0 i32) (param $1 anyref) (param $2 i32) (param $3 anyref) (result i32 eqref) |
1142 | 1214 | ;; CHECK-NEXT: (local $scratch anyref) |
1143 | 1215 | ;; CHECK-NEXT: (local $scratch_5 i32) |
|
1824 | 1896 | ;; CHECK-NEXT: ) |
1825 | 1897 | ;; CHECK-NEXT: ) |
1826 | 1898 | ;; OPT_O: (func $with-block-param (type $25) (param $0 i64) (param $1 anyref) (result i64 eqref) |
1827 | | - ;; OPT_O-NEXT: (block $block (type $13) (result i64 eqref) |
| 1899 | + ;; OPT_O-NEXT: (block $block (type $14) (result i64 eqref) |
1828 | 1900 | ;; OPT_O-NEXT: (tuple.make 2 |
1829 | 1901 | ;; OPT_O-NEXT: (local.get $0) |
1830 | 1902 | ;; OPT_O-NEXT: (block $block0 (result eqref) |
|
1960 | 2032 | end |
1961 | 2033 | ) |
1962 | 2034 |
|
1963 | | - ;; CHECK: (func $loop-results (type $10) (param $0 i32) (param $1 anyref) (result i32 anyref) |
| 2035 | + ;; CHECK: (func $loop-results (type $11) (param $0 i32) (param $1 anyref) (result i32 anyref) |
1964 | 2036 | ;; CHECK-NEXT: (local $scratch (tuple i32 anyref)) |
1965 | 2037 | ;; CHECK-NEXT: (local $scratch_3 (tuple i32 anyref)) |
1966 | 2038 | ;; CHECK-NEXT: (local $scratch_4 anyref) |
|
2026 | 2098 | ;; CHECK-NEXT: ) |
2027 | 2099 | ;; CHECK-NEXT: ) |
2028 | 2100 | ;; CHECK-NEXT: ) |
2029 | | - ;; OPT_O: (func $loop-results (type $8) (param $0 i32) (param $1 anyref) (result i32 anyref) |
| 2101 | + ;; OPT_O: (func $loop-results (type $9) (param $0 i32) (param $1 anyref) (result i32 anyref) |
2030 | 2102 | ;; OPT_O-NEXT: (local $2 (tuple i32 anyref)) |
2031 | 2103 | ;; OPT_O-NEXT: (local $3 eqref) |
2032 | 2104 | ;; OPT_O-NEXT: (local.set $2 |
|
2081 | 2153 | end |
2082 | 2154 | ) |
2083 | 2155 |
|
2084 | | - ;; CHECK: (func $if (type $11) (param $0 i32) (param $1 i32) (param $2 anyref) (result i32 eqref) |
| 2156 | + ;; CHECK: (func $if (type $12) (param $0 i32) (param $1 i32) (param $2 anyref) (result i32 eqref) |
2085 | 2157 | ;; CHECK-NEXT: (local $scratch anyref) |
2086 | 2158 | ;; CHECK-NEXT: (local $scratch_4 i32) |
2087 | 2159 | ;; CHECK-NEXT: (local $scratch_5 i32) |
|
2143 | 2215 | ;; CHECK-NEXT: ) |
2144 | 2216 | ;; CHECK-NEXT: ) |
2145 | 2217 | ;; CHECK-NEXT: ) |
2146 | | - ;; OPT_O: (func $if (type $9) (param $0 i32) (param $1 i32) (param $2 anyref) (result i32 eqref) |
| 2218 | + ;; OPT_O: (func $if (type $10) (param $0 i32) (param $1 i32) (param $2 anyref) (result i32 eqref) |
2147 | 2219 | ;; OPT_O-NEXT: (block $label (type $0) (result i32 eqref) |
2148 | 2220 | ;; OPT_O-NEXT: (tuple.make 2 |
2149 | 2221 | ;; OPT_O-NEXT: (local.get $1) |
|
2193 | 2265 | end |
2194 | 2266 | ) |
2195 | 2267 |
|
2196 | | - ;; CHECK: (func $else (type $11) (param $0 i32) (param $1 i32) (param $2 anyref) (result i32 eqref) |
| 2268 | + ;; CHECK: (func $else (type $12) (param $0 i32) (param $1 i32) (param $2 anyref) (result i32 eqref) |
2197 | 2269 | ;; CHECK-NEXT: (local $scratch anyref) |
2198 | 2270 | ;; CHECK-NEXT: (local $scratch_4 i32) |
2199 | 2271 | ;; CHECK-NEXT: (local $scratch_5 i32) |
|
2255 | 2327 | ;; CHECK-NEXT: ) |
2256 | 2328 | ;; CHECK-NEXT: ) |
2257 | 2329 | ;; CHECK-NEXT: ) |
2258 | | - ;; OPT_O: (func $else (type $9) (param $0 i32) (param $1 i32) (param $2 anyref) (result i32 eqref) |
| 2330 | + ;; OPT_O: (func $else (type $10) (param $0 i32) (param $1 i32) (param $2 anyref) (result i32 eqref) |
2259 | 2331 | ;; OPT_O-NEXT: (block $label (type $0) (result i32 eqref) |
2260 | 2332 | ;; OPT_O-NEXT: (tuple.make 2 |
2261 | 2333 | ;; OPT_O-NEXT: (local.get $1) |
|
0 commit comments