Commit 8bb8dd1
committed
Optimize exact casts better in Unsubtyping
Casts generally need special treatment in Unsubtyping because any
subtype of the destination type could flow into the source type and be
successfully cast, meaning all original subtypes of the destination type
that are still subtypes of the source types need to remain subtypes of
the destination type as well. However, exact casts do not have this
property because strict subtypes of the destination type will fail the
cast whether or not they remain subtypes of the destination type in the
optimized module.
Update the analysis so that exact casts require only simple subtyping
between the destination and source types.1 parent deca26f commit 8bb8dd1
4 files changed
Lines changed: 132 additions & 30 deletions
File tree
- src
- ir
- passes
- test/lit/passes
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
| |||
52 | 53 | | |
53 | 54 | | |
54 | 55 | | |
55 | | - | |
56 | | - | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
57 | 59 | | |
58 | 60 | | |
59 | 61 | | |
| |||
165 | 167 | | |
166 | 168 | | |
167 | 169 | | |
168 | | - | |
| 170 | + | |
169 | 171 | | |
170 | 172 | | |
171 | 173 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
593 | 593 | | |
594 | 594 | | |
595 | 595 | | |
596 | | - | |
| 596 | + | |
| 597 | + | |
597 | 598 | | |
598 | 599 | | |
599 | 600 | | |
600 | 601 | | |
601 | 602 | | |
602 | 603 | | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
603 | 611 | | |
604 | 612 | | |
605 | 613 | | |
| |||
611 | 619 | | |
612 | 620 | | |
613 | 621 | | |
614 | | - | |
| 622 | + | |
615 | 623 | | |
616 | 624 | | |
617 | 625 | | |
618 | 626 | | |
619 | | - | |
| 627 | + | |
620 | 628 | | |
621 | 629 | | |
622 | 630 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
563 | 563 | | |
564 | 564 | | |
565 | 565 | | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 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 | + | |
| 665 | + | |
| 666 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
346 | 346 | | |
347 | 347 | | |
348 | 348 | | |
349 | | - | |
| 349 | + | |
350 | 350 | | |
351 | 351 | | |
352 | 352 | | |
353 | 353 | | |
354 | 354 | | |
355 | | - | |
| 355 | + | |
356 | 356 | | |
357 | 357 | | |
358 | 358 | | |
359 | | - | |
360 | 359 | | |
361 | 360 | | |
362 | 361 | | |
363 | | - | |
| 362 | + | |
364 | 363 | | |
365 | | - | |
366 | | - | |
367 | | - | |
| 364 | + | |
368 | 365 | | |
369 | 366 | | |
370 | | - | |
| 367 | + | |
371 | 368 | | |
372 | 369 | | |
373 | 370 | | |
| |||
432 | 429 | | |
433 | 430 | | |
434 | 431 | | |
435 | | - | |
| 432 | + | |
436 | 433 | | |
437 | 434 | | |
438 | 435 | | |
439 | 436 | | |
440 | 437 | | |
441 | | - | |
| 438 | + | |
442 | 439 | | |
443 | 440 | | |
444 | 441 | | |
445 | | - | |
446 | 442 | | |
447 | 443 | | |
448 | 444 | | |
449 | | - | |
| 445 | + | |
450 | 446 | | |
451 | | - | |
452 | | - | |
453 | | - | |
| 447 | + | |
454 | 448 | | |
455 | 449 | | |
456 | | - | |
| 450 | + | |
457 | 451 | | |
458 | 452 | | |
459 | 453 | | |
| |||
522 | 516 | | |
523 | 517 | | |
524 | 518 | | |
525 | | - | |
| 519 | + | |
526 | 520 | | |
527 | 521 | | |
528 | 522 | | |
529 | 523 | | |
530 | 524 | | |
531 | | - | |
| 525 | + | |
532 | 526 | | |
533 | 527 | | |
534 | 528 | | |
535 | | - | |
536 | 529 | | |
537 | 530 | | |
538 | 531 | | |
539 | | - | |
| 532 | + | |
540 | 533 | | |
541 | | - | |
542 | | - | |
543 | | - | |
| 534 | + | |
544 | 535 | | |
545 | 536 | | |
546 | | - | |
| 537 | + | |
547 | 538 | | |
548 | 539 | | |
549 | 540 | | |
| |||
0 commit comments