- Notifications
You must be signed in to change notification settings - Fork4.9k
Commit3352e25
committed
Improve handling of INT_MIN / -1 and related cases.
Some platforms throw an exception for this division, rather than returninga necessarily-overflowed result. Since we were testing for overflow afterthe fact, an exception isn't nice. We can avoid the problem by treatingdivision by -1 as negation.Add some regression tests so that we'll find out if any compilers try tooptimize away the overflow check conditions.Back-patch of commit1f7cb5c.Per discussion with Xi Wang, though this is different from the patch hesubmitted.1 parent8728fdc commit3352e25
9 files changed
+198
-68
lines changedLines changed: 64 additions & 49 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
671 | 671 |
| |
672 | 672 |
| |
673 | 673 |
| |
674 |
| - | |
675 |
| - | |
676 |
| - | |
677 |
| - | |
678 |
| - | |
679 |
| - | |
680 |
| - | |
681 |
| - | |
682 |
| - | |
683 |
| - | |
684 |
| - | |
685 |
| - | |
686 | 674 |
| |
687 | 675 |
| |
688 | 676 |
| |
| |||
699 | 687 |
| |
700 | 688 |
| |
701 | 689 |
| |
702 |
| - | |
| 690 | + | |
| 691 | + | |
703 | 692 |
| |
704 | 693 |
| |
705 | 694 |
| |
| |||
722 | 711 |
| |
723 | 712 |
| |
724 | 713 |
| |
725 |
| - | |
726 |
| - | |
727 | 714 |
| |
728 |
| - | |
729 |
| - | |
| 715 | + | |
| 716 | + | |
| 717 | + | |
| 718 | + | |
730 | 719 |
| |
731 |
| - | |
732 |
| - | |
733 |
| - | |
734 |
| - | |
735 |
| - | |
| 720 | + | |
| 721 | + | |
| 722 | + | |
| 723 | + | |
| 724 | + | |
| 725 | + | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
| 729 | + | |
| 730 | + | |
| 731 | + | |
736 | 732 |
| |
737 | 733 |
| |
738 | 734 |
| |
739 |
| - | |
740 |
| - | |
741 |
| - | |
742 |
| - | |
743 |
| - | |
744 |
| - | |
745 |
| - | |
746 |
| - | |
747 |
| - | |
748 | 735 |
| |
749 | 736 |
| |
750 | 737 |
| |
| |||
866 | 853 |
| |
867 | 854 |
| |
868 | 855 |
| |
869 |
| - | |
870 |
| - | |
871 | 856 |
| |
872 |
| - | |
873 |
| - | |
874 |
| - | |
| 857 | + | |
| 858 | + | |
| 859 | + | |
| 860 | + | |
875 | 861 |
| |
876 |
| - | |
877 |
| - | |
878 |
| - | |
879 |
| - | |
| 862 | + | |
| 863 | + | |
| 864 | + | |
| 865 | + | |
| 866 | + | |
| 867 | + | |
| 868 | + | |
| 869 | + | |
| 870 | + | |
| 871 | + | |
| 872 | + | |
| 873 | + | |
| 874 | + | |
| 875 | + | |
| 876 | + | |
880 | 877 |
| |
881 | 878 |
| |
882 | 879 |
| |
| |||
1054 | 1051 |
| |
1055 | 1052 |
| |
1056 | 1053 |
| |
1057 |
| - | |
1058 |
| - | |
1059 | 1054 |
| |
1060 |
| - | |
1061 |
| - | |
1062 |
| - | |
| 1055 | + | |
| 1056 | + | |
| 1057 | + | |
| 1058 | + | |
1063 | 1059 |
| |
1064 |
| - | |
1065 |
| - | |
1066 |
| - | |
1067 |
| - | |
| 1060 | + | |
| 1061 | + | |
| 1062 | + | |
| 1063 | + | |
| 1064 | + | |
| 1065 | + | |
| 1066 | + | |
| 1067 | + | |
| 1068 | + | |
| 1069 | + | |
| 1070 | + | |
| 1071 | + | |
| 1072 | + | |
| 1073 | + | |
| 1074 | + | |
1068 | 1075 |
| |
1069 | 1076 |
| |
1070 | 1077 |
| |
| |||
1160 | 1167 |
| |
1161 | 1168 |
| |
1162 | 1169 |
| |
| 1170 | + | |
| 1171 | + | |
| 1172 | + | |
| 1173 | + | |
| 1174 | + | |
| 1175 | + | |
| 1176 | + | |
| 1177 | + | |
1163 | 1178 |
| |
1164 | 1179 |
| |
1165 | 1180 |
| |
|
Lines changed: 40 additions & 19 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
583 | 583 |
| |
584 | 584 |
| |
585 | 585 |
| |
586 |
| - | |
| 586 | + | |
| 587 | + | |
587 | 588 |
| |
588 | 589 |
| |
589 | 590 |
| |
| |||
607 | 608 |
| |
608 | 609 |
| |
609 | 610 |
| |
610 |
| - | |
611 |
| - | |
612 | 611 |
| |
613 |
| - | |
614 |
| - | |
615 |
| - | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
616 | 616 |
| |
617 |
| - | |
618 |
| - | |
619 |
| - | |
620 |
| - | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
621 | 632 |
| |
622 | 633 |
| |
623 | 634 |
| |
| |||
846 | 857 |
| |
847 | 858 |
| |
848 | 859 |
| |
849 |
| - | |
850 |
| - | |
851 | 860 |
| |
852 |
| - | |
853 |
| - | |
854 |
| - | |
| 861 | + | |
| 862 | + | |
| 863 | + | |
| 864 | + | |
855 | 865 |
| |
856 |
| - | |
857 |
| - | |
858 |
| - | |
859 |
| - | |
| 866 | + | |
| 867 | + | |
| 868 | + | |
| 869 | + | |
| 870 | + | |
| 871 | + | |
| 872 | + | |
| 873 | + | |
| 874 | + | |
| 875 | + | |
| 876 | + | |
| 877 | + | |
| 878 | + | |
| 879 | + | |
| 880 | + | |
860 | 881 |
| |
861 | 882 |
| |
862 | 883 |
| |
|
Lines changed: 11 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
228 | 228 |
| |
229 | 229 |
| |
230 | 230 |
| |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + |
Lines changed: 21 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
315 | 315 |
| |
316 | 316 |
| |
317 | 317 |
| |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + |
Lines changed: 21 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
317 | 317 |
| |
318 | 318 |
| |
319 | 319 |
| |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + |
Lines changed: 21 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
317 | 317 |
| |
318 | 318 |
| |
319 | 319 |
| |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + |
Lines changed: 4 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
86 | 86 |
| |
87 | 87 |
| |
88 | 88 |
| |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + |
Lines changed: 8 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
125 | 125 |
| |
126 | 126 |
| |
127 | 127 |
| |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + |
Lines changed: 8 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
69 | 69 |
| |
70 | 70 |
| |
71 | 71 |
| |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + |
0 commit comments
Comments
(0)