Commit 9fed480
authored
[BOLT] Explicitly check for returns when extending call continuation profile (#143295)
Call continuation logic relies on assumptions about fall-through origin:
- the branch is external to the function,
- fall-through start is at the beginning of the block,
- the block is not an entry point or a landing pad.
Leverage trace information to explicitly check whether the origin is a
return instruction, and defer to checks above only in case of
DSO-external branch source.
This covers both regular and BAT cases, addressing call continuation
fall-through undercounting in the latter mode, which improves BAT
profile quality metrics. For example, for one large binary:
- CFG discontinuity 21.83% -> 0.00%,
- CFG flow imbalance 10.77%/100.00% -> 3.40%/13.82% (weighted/worst)
- CG flow imbalance 8.49% —> 8.49%.
Depends on #143289.
Test Plan: updated callcont-fallthru.s1 parent 816ab1a commit 9fed480
3 files changed
Lines changed: 90 additions & 65 deletions
File tree
- bolt
- include/bolt/Profile
- lib/Profile
- test/X86
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
132 | 132 | | |
133 | 133 | | |
134 | 134 | | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
135 | 138 | | |
136 | 139 | | |
137 | 140 | | |
| |||
204 | 207 | | |
205 | 208 | | |
206 | 209 | | |
207 | | - | |
208 | | - | |
| 210 | + | |
| 211 | + | |
209 | 212 | | |
210 | 213 | | |
211 | 214 | | |
| |||
265 | 268 | | |
266 | 269 | | |
267 | 270 | | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
268 | 274 | | |
269 | 275 | | |
270 | 276 | | |
271 | 277 | | |
272 | | - | |
| 278 | + | |
273 | 279 | | |
274 | 280 | | |
275 | 281 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
730 | 730 | | |
731 | 731 | | |
732 | 732 | | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
| 746 | + | |
| 747 | + | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
733 | 752 | | |
734 | 753 | | |
735 | | - | |
736 | | - | |
737 | | - | |
738 | | - | |
739 | | - | |
740 | | - | |
741 | | - | |
742 | | - | |
743 | 754 | | |
744 | 755 | | |
745 | 756 | | |
746 | | - | |
747 | | - | |
| 757 | + | |
748 | 758 | | |
749 | 759 | | |
750 | 760 | | |
751 | 761 | | |
752 | | - | |
| 762 | + | |
753 | 763 | | |
754 | 764 | | |
755 | 765 | | |
756 | 766 | | |
757 | | - | |
758 | | - | |
759 | 767 | | |
760 | 768 | | |
761 | 769 | | |
762 | 770 | | |
763 | | - | |
| 771 | + | |
764 | 772 | | |
765 | | - | |
| 773 | + | |
766 | 774 | | |
767 | 775 | | |
768 | | - | |
769 | | - | |
| 776 | + | |
| 777 | + | |
770 | 778 | | |
771 | 779 | | |
772 | 780 | | |
773 | | - | |
774 | | - | |
775 | | - | |
776 | | - | |
777 | 781 | | |
778 | 782 | | |
779 | 783 | | |
| |||
783 | 787 | | |
784 | 788 | | |
785 | 789 | | |
786 | | - | |
| 790 | + | |
| 791 | + | |
787 | 792 | | |
788 | 793 | | |
789 | 794 | | |
| |||
808 | 813 | | |
809 | 814 | | |
810 | 815 | | |
811 | | - | |
812 | | - | |
| 816 | + | |
| 817 | + | |
813 | 818 | | |
814 | 819 | | |
815 | 820 | | |
| |||
831 | 836 | | |
832 | 837 | | |
833 | 838 | | |
834 | | - | |
| 839 | + | |
835 | 840 | | |
836 | 841 | | |
837 | 842 | | |
| |||
865 | 870 | | |
866 | 871 | | |
867 | 872 | | |
868 | | - | |
869 | | - | |
870 | | - | |
| 873 | + | |
| 874 | + | |
| 875 | + | |
| 876 | + | |
| 877 | + | |
| 878 | + | |
| 879 | + | |
871 | 880 | | |
872 | 881 | | |
873 | 882 | | |
| |||
1557 | 1566 | | |
1558 | 1567 | | |
1559 | 1568 | | |
1560 | | - | |
| 1569 | + | |
| 1570 | + | |
| 1571 | + | |
1561 | 1572 | | |
1562 | 1573 | | |
1563 | 1574 | | |
1564 | | - | |
| 1575 | + | |
1565 | 1576 | | |
1566 | 1577 | | |
1567 | 1578 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
8 | | - | |
9 | | - | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
10 | 14 | | |
11 | 15 | | |
12 | 16 | | |
13 | 17 | | |
14 | 18 | | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
26 | 40 | | |
27 | 41 | | |
28 | 42 | | |
29 | | - | |
| 43 | + | |
30 | 44 | | |
31 | 45 | | |
32 | 46 | | |
| |||
56 | 70 | | |
57 | 71 | | |
58 | 72 | | |
59 | | - | |
| 73 | + | |
60 | 74 | | |
61 | | - | |
62 | | - | |
63 | | - | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
64 | 78 | | |
65 | 79 | | |
66 | 80 | | |
| |||
71 | 85 | | |
72 | 86 | | |
73 | 87 | | |
74 | | - | |
75 | | - | |
76 | 88 | | |
77 | 89 | | |
78 | 90 | | |
79 | 91 | | |
80 | | - | |
81 | | - | |
82 | | - | |
83 | | - | |
84 | | - | |
85 | | - | |
86 | | - | |
87 | | - | |
| 92 | + | |
88 | 93 | | |
89 | | - | |
90 | | - | |
91 | | - | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
92 | 100 | | |
93 | 101 | | |
94 | 102 | | |
| |||
0 commit comments