Commit 7eae522
authored
Fix bugs involving the combination of branching and subtyping (#1403)
* wasmparser: Fix behavior of branching to labels and subtyping
Addresses issues discussed in WebAssembly/gc#516
* wasm-smith: Properly erase subtype information after conditional branches
When, for example, `[a i32]` is on the stack and we have a `br_if @label` where
`@label`'s type is `[b]` and `a <: b`, then whole `br_if` is typed `[b i32] ->
[b]`. Because `a <: b` the `br_if` is valid. However, `a <: b` does *not* mean
that the instruction results in `[a]`. It "erases" the `a` and pushes a `b`.
This addresses WebAssembly/gc#516 in `wasm-smith`.1 parent 5928201 commit 7eae522
File tree
5 files changed
+127
-60
lines changed- crates
- wasm-smith/src/core
- wasmparser/src/validator
- tests
- local
- gc
- snapshots/local/unreachable-valid.wast
5 files changed
+127
-60
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
922 | 922 | | |
923 | 923 | | |
924 | 924 | | |
| 925 | + | |
| 926 | + | |
| 927 | + | |
| 928 | + | |
| 929 | + | |
| 930 | + | |
| 931 | + | |
| 932 | + | |
| 933 | + | |
| 934 | + | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
| 951 | + | |
925 | 952 | | |
926 | 953 | | |
927 | 954 | | |
| |||
1710 | 1737 | | |
1711 | 1738 | | |
1712 | 1739 | | |
1713 | | - | |
1714 | | - | |
1715 | | - | |
1716 | | - | |
| 1740 | + | |
| 1741 | + | |
| 1742 | + | |
1717 | 1743 | | |
1718 | 1744 | | |
1719 | 1745 | | |
| |||
1757 | 1783 | | |
1758 | 1784 | | |
1759 | 1785 | | |
1760 | | - | |
| 1786 | + | |
| 1787 | + | |
| 1788 | + | |
1761 | 1789 | | |
1762 | 1790 | | |
1763 | 1791 | | |
| |||
2203 | 2231 | | |
2204 | 2232 | | |
2205 | 2233 | | |
| 2234 | + | |
2206 | 2235 | | |
| 2236 | + | |
2207 | 2237 | | |
2208 | 2238 | | |
2209 | 2239 | | |
2210 | 2240 | | |
2211 | 2241 | | |
2212 | | - | |
| 2242 | + | |
2213 | 2243 | | |
2214 | 2244 | | |
2215 | 2245 | | |
| |||
2270 | 2300 | | |
2271 | 2301 | | |
2272 | 2302 | | |
| 2303 | + | |
2273 | 2304 | | |
| 2305 | + | |
2274 | 2306 | | |
2275 | | - | |
| 2307 | + | |
2276 | 2308 | | |
2277 | 2309 | | |
2278 | 2310 | | |
| |||
2354 | 2386 | | |
2355 | 2387 | | |
2356 | 2388 | | |
| 2389 | + | |
2357 | 2390 | | |
2358 | 2391 | | |
2359 | 2392 | | |
| |||
2363 | 2396 | | |
2364 | 2397 | | |
2365 | 2398 | | |
| 2399 | + | |
| 2400 | + | |
| 2401 | + | |
| 2402 | + | |
| 2403 | + | |
| 2404 | + | |
| 2405 | + | |
| 2406 | + | |
| 2407 | + | |
2366 | 2408 | | |
2367 | 2409 | | |
2368 | 2410 | | |
| |||
2433 | 2475 | | |
2434 | 2476 | | |
2435 | 2477 | | |
2436 | | - | |
| 2478 | + | |
2437 | 2479 | | |
2438 | 2480 | | |
2439 | 2481 | | |
| |||
2442 | 2484 | | |
2443 | 2485 | | |
2444 | 2486 | | |
| 2487 | + | |
2445 | 2488 | | |
2446 | 2489 | | |
2447 | 2490 | | |
| |||
2450 | 2493 | | |
2451 | 2494 | | |
2452 | 2495 | | |
| 2496 | + | |
| 2497 | + | |
| 2498 | + | |
2453 | 2499 | | |
2454 | 2500 | | |
2455 | 2501 | | |
2456 | 2502 | | |
2457 | 2503 | | |
2458 | 2504 | | |
2459 | | - | |
| 2505 | + | |
2460 | 2506 | | |
2461 | 2507 | | |
2462 | 2508 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
187 | 187 | | |
188 | 188 | | |
189 | 189 | | |
190 | | - | |
191 | | - | |
192 | | - | |
193 | | - | |
194 | | - | |
195 | | - | |
196 | | - | |
197 | 190 | | |
198 | 191 | | |
199 | 192 | | |
| |||
409 | 402 | | |
410 | 403 | | |
411 | 404 | | |
412 | | - | |
413 | | - | |
414 | | - | |
415 | | - | |
416 | | - | |
417 | 405 | | |
418 | 406 | | |
419 | 407 | | |
| |||
482 | 470 | | |
483 | 471 | | |
484 | 472 | | |
485 | | - | |
486 | 473 | | |
487 | | - | |
488 | | - | |
489 | | - | |
490 | | - | |
491 | | - | |
492 | | - | |
493 | | - | |
494 | | - | |
495 | | - | |
496 | | - | |
497 | | - | |
498 | | - | |
499 | | - | |
500 | | - | |
501 | | - | |
502 | | - | |
503 | | - | |
504 | | - | |
505 | | - | |
506 | | - | |
507 | | - | |
508 | | - | |
509 | | - | |
510 | | - | |
511 | | - | |
512 | | - | |
513 | | - | |
514 | | - | |
515 | | - | |
516 | | - | |
| 474 | + | |
| 475 | + | |
517 | 476 | | |
518 | | - | |
519 | | - | |
| 477 | + | |
| 478 | + | |
520 | 479 | | |
521 | 480 | | |
522 | 481 | | |
| |||
1473 | 1432 | | |
1474 | 1433 | | |
1475 | 1434 | | |
1476 | | - | |
| 1435 | + | |
1477 | 1436 | | |
1478 | 1437 | | |
1479 | 1438 | | |
| |||
1490 | 1449 | | |
1491 | 1450 | | |
1492 | 1451 | | |
1493 | | - | |
| 1452 | + | |
| 1453 | + | |
| 1454 | + | |
| 1455 | + | |
| 1456 | + | |
| 1457 | + | |
| 1458 | + | |
| 1459 | + | |
| 1460 | + | |
| 1461 | + | |
1494 | 1462 | | |
1495 | 1463 | | |
1496 | 1464 | | |
| |||
2471 | 2439 | | |
2472 | 2440 | | |
2473 | 2441 | | |
2474 | | - | |
| 2442 | + | |
2475 | 2443 | | |
2476 | 2444 | | |
2477 | 2445 | | |
| |||
2506 | 2474 | | |
2507 | 2475 | | |
2508 | 2476 | | |
2509 | | - | |
| 2477 | + | |
2510 | 2478 | | |
2511 | 2479 | | |
2512 | 2480 | | |
| |||
3940 | 3908 | | |
3941 | 3909 | | |
3942 | 3910 | | |
3943 | | - | |
| 3911 | + | |
3944 | 3912 | | |
3945 | 3913 | | |
3946 | 3914 | | |
| |||
3984 | 3952 | | |
3985 | 3953 | | |
3986 | 3954 | | |
3987 | | - | |
| 3955 | + | |
3988 | 3956 | | |
3989 | 3957 | | |
3990 | 3958 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 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 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
0 commit comments