Commit 2165afc
authored
TypeRefiningGUFA: Avoid bottom continuation casts (#8513)
The pass already checked `isContinuation` and did not refine a field to
such a type, if we know we need a cast to fix things up (we can't do it
in such cases, as the type can't be cast). However, we did not handle
a cast to the bottom type nullcontref.
Avoid a cast there by emitting a null. That is, before we did
```wat
(ref.cast nullcontref
VALUE
)
```
and now we do
```wat
(block
(drop (VALUE))
(ref.null)
)
```
The null has the right type for where we are writing.
For a non-nullable bottom type, emit an unreachable.
As a drive by, remove
```
updater.runOnModuleCode(getPassRunner(), &wasm);
```
That code cannot work in module code anyhow (it emits casts,
blocks, drops, etc.).1 parent 40e9cfd commit 2165afc
File tree
3 files changed
+118
-30
lines changed- src/passes
- test/lit/passes
3 files changed
+118
-30
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
474 | 474 | | |
475 | 475 | | |
476 | 476 | | |
| 477 | + | |
| 478 | + | |
477 | 479 | | |
478 | 480 | | |
479 | 481 | | |
| |||
514 | 516 | | |
515 | 517 | | |
516 | 518 | | |
517 | | - | |
518 | | - | |
519 | | - | |
| 519 | + | |
520 | 520 | | |
521 | 521 | | |
522 | 522 | | |
| |||
532 | 532 | | |
533 | 533 | | |
534 | 534 | | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
535 | 564 | | |
536 | | - | |
537 | | - | |
538 | | - | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
539 | 568 | | |
540 | 569 | | |
541 | 570 | | |
542 | 571 | | |
543 | 572 | | |
544 | 573 | | |
545 | | - | |
546 | 574 | | |
547 | 575 | | |
548 | 576 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
611 | 611 | | |
612 | 612 | | |
613 | 613 | | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1252 | 1252 | | |
1253 | 1253 | | |
1254 | 1254 | | |
1255 | | - | |
1256 | | - | |
1257 | | - | |
1258 | | - | |
1259 | | - | |
1260 | | - | |
1261 | | - | |
1262 | | - | |
| 1255 | + | |
| 1256 | + | |
| 1257 | + | |
| 1258 | + | |
| 1259 | + | |
| 1260 | + | |
| 1261 | + | |
| 1262 | + | |
| 1263 | + | |
| 1264 | + | |
| 1265 | + | |
| 1266 | + | |
1263 | 1267 | | |
1264 | 1268 | | |
| 1269 | + | |
| 1270 | + | |
| 1271 | + | |
1265 | 1272 | | |
1266 | 1273 | | |
1267 | | - | |
1268 | | - | |
1269 | | - | |
| 1274 | + | |
1270 | 1275 | | |
1271 | 1276 | | |
| 1277 | + | |
1272 | 1278 | | |
1273 | 1279 | | |
1274 | 1280 | | |
| |||
1282 | 1288 | | |
1283 | 1289 | | |
1284 | 1290 | | |
1285 | | - | |
1286 | | - | |
| 1291 | + | |
| 1292 | + | |
1287 | 1293 | | |
1288 | 1294 | | |
1289 | 1295 | | |
| |||
1305 | 1311 | | |
1306 | 1312 | | |
1307 | 1313 | | |
1308 | | - | |
1309 | | - | |
1310 | | - | |
1311 | | - | |
1312 | | - | |
1313 | | - | |
1314 | | - | |
| 1314 | + | |
| 1315 | + | |
| 1316 | + | |
| 1317 | + | |
| 1318 | + | |
| 1319 | + | |
| 1320 | + | |
| 1321 | + | |
| 1322 | + | |
1315 | 1323 | | |
1316 | 1324 | | |
1317 | 1325 | | |
1318 | | - | |
1319 | | - | |
1320 | | - | |
| 1326 | + | |
| 1327 | + | |
| 1328 | + | |
1321 | 1329 | | |
1322 | 1330 | | |
| 1331 | + | |
1323 | 1332 | | |
1324 | 1333 | | |
1325 | 1334 | | |
| |||
0 commit comments