Commit ff38981
authored
LTO: Redesign the CFI !aliases metadata.
With the current aliases metadata we lose information about which groups
of aliases survive symbol resolution. This causes various problems such
as #150075 where symbol resolution breaks the link between alias groups.
In this redesign of the aliases metadata, we stop representing the
individual aliases in !aliases. Instead, the individual aliases are
represented in !cfi.functions in the same way as functions, and the
alias groups (i.e. groups of symbols with the same address) are stored
in !aliases. At symbol resolution time, we filter out all non-prevailing
members of !aliases; the resulting set is used by LowerTypeTests to
recreate the aliases.
With this change it is now possible for a jump table entry to refer
to an alias in one of the ThinLTO object files (e.g. if a function is
non-prevailing but its alias is prevailing), so instead of deleting them,
rename them with the ".cfi" suffix.
Fixes #150070.
Fixes #150075.
Reviewers: teresajohnson, vitalybuka
Reviewed By: vitalybuka
Pull Request: #1506901 parent 62187a6 commit ff38981
File tree
7 files changed
+148
-100
lines changed- llvm
- include/llvm/LTO
- lib
- LTO
- Transforms/IPO
- test/Transforms
- LowerTypeTests
- Inputs
- ThinLTOBitcodeWriter
7 files changed
+148
-100
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
546 | 546 | | |
547 | 547 | | |
548 | 548 | | |
549 | | - | |
| 549 | + | |
| 550 | + | |
550 | 551 | | |
551 | 552 | | |
552 | | - | |
| 553 | + | |
| 554 | + | |
553 | 555 | | |
554 | 556 | | |
555 | 557 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
743 | 743 | | |
744 | 744 | | |
745 | 745 | | |
| 746 | + | |
746 | 747 | | |
747 | | - | |
| 748 | + | |
748 | 749 | | |
749 | 750 | | |
750 | 751 | | |
| |||
753 | 754 | | |
754 | 755 | | |
755 | 756 | | |
756 | | - | |
757 | | - | |
| 757 | + | |
| 758 | + | |
758 | 759 | | |
759 | 760 | | |
760 | 761 | | |
| |||
791 | 792 | | |
792 | 793 | | |
793 | 794 | | |
794 | | - | |
| 795 | + | |
795 | 796 | | |
796 | 797 | | |
797 | 798 | | |
| |||
846 | 847 | | |
847 | 848 | | |
848 | 849 | | |
849 | | - | |
| 850 | + | |
| 851 | + | |
850 | 852 | | |
851 | 853 | | |
852 | 854 | | |
| |||
860 | 862 | | |
861 | 863 | | |
862 | 864 | | |
863 | | - | |
864 | | - | |
865 | | - | |
866 | | - | |
867 | | - | |
| 865 | + | |
| 866 | + | |
| 867 | + | |
| 868 | + | |
868 | 869 | | |
869 | 870 | | |
| 871 | + | |
| 872 | + | |
| 873 | + | |
| 874 | + | |
| 875 | + | |
| 876 | + | |
| 877 | + | |
| 878 | + | |
| 879 | + | |
| 880 | + | |
| 881 | + | |
| 882 | + | |
| 883 | + | |
| 884 | + | |
| 885 | + | |
| 886 | + | |
| 887 | + | |
| 888 | + | |
| 889 | + | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
870 | 893 | | |
871 | 894 | | |
872 | 895 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
502 | 502 | | |
503 | 503 | | |
504 | 504 | | |
505 | | - | |
506 | | - | |
| 505 | + | |
507 | 506 | | |
508 | 507 | | |
509 | 508 | | |
| |||
1103 | 1102 | | |
1104 | 1103 | | |
1105 | 1104 | | |
1106 | | - | |
1107 | | - | |
1108 | | - | |
| 1105 | + | |
| 1106 | + | |
1109 | 1107 | | |
1110 | 1108 | | |
1111 | 1109 | | |
| |||
1135 | 1133 | | |
1136 | 1134 | | |
1137 | 1135 | | |
1138 | | - | |
1139 | 1136 | | |
1140 | 1137 | | |
1141 | 1138 | | |
1142 | 1139 | | |
1143 | 1140 | | |
1144 | | - | |
1145 | | - | |
1146 | | - | |
| 1141 | + | |
| 1142 | + | |
| 1143 | + | |
1147 | 1144 | | |
1148 | 1145 | | |
| 1146 | + | |
1149 | 1147 | | |
1150 | 1148 | | |
1151 | 1149 | | |
1152 | 1150 | | |
1153 | 1151 | | |
1154 | | - | |
| 1152 | + | |
1155 | 1153 | | |
1156 | 1154 | | |
1157 | 1155 | | |
| |||
2077 | 2075 | | |
2078 | 2076 | | |
2079 | 2077 | | |
2080 | | - | |
2081 | 2078 | | |
2082 | 2079 | | |
2083 | 2080 | | |
2084 | | - | |
| 2081 | + | |
2085 | 2082 | | |
2086 | | - | |
| 2083 | + | |
2087 | 2084 | | |
2088 | | - | |
2089 | | - | |
2090 | 2085 | | |
2091 | 2086 | | |
2092 | 2087 | | |
| |||
2137 | 2132 | | |
2138 | 2133 | | |
2139 | 2134 | | |
| 2135 | + | |
| 2136 | + | |
| 2137 | + | |
| 2138 | + | |
| 2139 | + | |
| 2140 | + | |
| 2141 | + | |
| 2142 | + | |
| 2143 | + | |
| 2144 | + | |
| 2145 | + | |
| 2146 | + | |
2140 | 2147 | | |
2141 | 2148 | | |
2142 | 2149 | | |
| |||
2153 | 2160 | | |
2154 | 2161 | | |
2155 | 2162 | | |
2156 | | - | |
| 2163 | + | |
2157 | 2164 | | |
2158 | 2165 | | |
2159 | 2166 | | |
| |||
2227 | 2234 | | |
2228 | 2235 | | |
2229 | 2236 | | |
| 2237 | + | |
| 2238 | + | |
| 2239 | + | |
| 2240 | + | |
| 2241 | + | |
| 2242 | + | |
| 2243 | + | |
| 2244 | + | |
| 2245 | + | |
| 2246 | + | |
| 2247 | + | |
| 2248 | + | |
| 2249 | + | |
| 2250 | + | |
| 2251 | + | |
| 2252 | + | |
| 2253 | + | |
| 2254 | + | |
| 2255 | + | |
| 2256 | + | |
| 2257 | + | |
| 2258 | + | |
| 2259 | + | |
| 2260 | + | |
| 2261 | + | |
| 2262 | + | |
| 2263 | + | |
| 2264 | + | |
| 2265 | + | |
| 2266 | + | |
| 2267 | + | |
| 2268 | + | |
| 2269 | + | |
| 2270 | + | |
| 2271 | + | |
| 2272 | + | |
| 2273 | + | |
2230 | 2274 | | |
2231 | 2275 | | |
2232 | 2276 | | |
| |||
2414 | 2458 | | |
2415 | 2459 | | |
2416 | 2460 | | |
2417 | | - | |
2418 | | - | |
2419 | | - | |
2420 | | - | |
2421 | | - | |
2422 | | - | |
2423 | | - | |
2424 | | - | |
2425 | | - | |
2426 | | - | |
2427 | | - | |
2428 | | - | |
2429 | | - | |
2430 | | - | |
2431 | | - | |
2432 | | - | |
2433 | | - | |
2434 | | - | |
2435 | | - | |
2436 | | - | |
2437 | | - | |
2438 | | - | |
2439 | | - | |
2440 | | - | |
2441 | | - | |
2442 | | - | |
2443 | | - | |
2444 | | - | |
2445 | | - | |
2446 | | - | |
2447 | | - | |
2448 | | - | |
2449 | | - | |
2450 | | - | |
2451 | | - | |
2452 | | - | |
2453 | | - | |
2454 | | - | |
2455 | | - | |
2456 | | - | |
2457 | | - | |
| 2461 | + | |
| 2462 | + | |
| 2463 | + | |
| 2464 | + | |
| 2465 | + | |
| 2466 | + | |
| 2467 | + | |
| 2468 | + | |
| 2469 | + | |
| 2470 | + | |
2458 | 2471 | | |
2459 | 2472 | | |
2460 | 2473 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
384 | 384 | | |
385 | 385 | | |
386 | 386 | | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
387 | 391 | | |
388 | 392 | | |
389 | 393 | | |
| |||
403 | 407 | | |
404 | 408 | | |
405 | 409 | | |
406 | | - | |
| 410 | + | |
407 | 411 | | |
408 | 412 | | |
409 | 413 | | |
410 | 414 | | |
411 | | - | |
| 415 | + | |
412 | 416 | | |
413 | 417 | | |
414 | 418 | | |
| |||
428 | 432 | | |
429 | 433 | | |
430 | 434 | | |
431 | | - | |
| 435 | + | |
432 | 436 | | |
433 | 437 | | |
434 | 438 | | |
435 | 439 | | |
436 | 440 | | |
437 | | - | |
438 | | - | |
439 | | - | |
440 | | - | |
441 | | - | |
442 | | - | |
443 | | - | |
444 | | - | |
445 | | - | |
446 | | - | |
447 | | - | |
| 441 | + | |
448 | 442 | | |
449 | 443 | | |
450 | 444 | | |
451 | 445 | | |
452 | | - | |
453 | | - | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
454 | 453 | | |
455 | 454 | | |
456 | 455 | | |
| |||
Lines changed: 8 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
22 | 30 | | |
0 commit comments