Commit 6f2f9bd
committed
[AArch64] Support 'swiftcorocc' "popless" calls.
'swiftcorocc' calls are allowed to have "popless" returns, which don't
fully restore the stack, thereby allowing the caller to access some
stack allocations made in the 'swiftcorocc' callee.
Concretely, calls to these functions don't restore SP (but do restore FP).
So the most important characteristic of a 'swiftcorocc' call is that it
forces the caller function to access its stack through FP, like it does
with e.g., variable-size allocas.
Support this on AArch64 by marking the frame as having a popless
call, which we generally honor when we decide whether the frame needs
FP and FP-based addressing, as we do today for variably-sized allocas.
rdar://1359846301 parent d257da7 commit 6f2f9bd
File tree
5 files changed
+158
-6
lines changed- llvm
- include/llvm/CodeGen
- lib/Target/AArch64
- GISel
- test/CodeGen/AArch64
5 files changed
+158
-6
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
319 | 319 | | |
320 | 320 | | |
321 | 321 | | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
322 | 326 | | |
323 | 327 | | |
324 | 328 | | |
| |||
634 | 638 | | |
635 | 639 | | |
636 | 640 | | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
637 | 644 | | |
638 | 645 | | |
639 | 646 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
347 | 347 | | |
348 | 348 | | |
349 | 349 | | |
350 | | - | |
| 350 | + | |
| 351 | + | |
351 | 352 | | |
352 | 353 | | |
353 | 354 | | |
| |||
499 | 500 | | |
500 | 501 | | |
501 | 502 | | |
| 503 | + | |
502 | 504 | | |
503 | 505 | | |
504 | 506 | | |
| |||
1180 | 1182 | | |
1181 | 1183 | | |
1182 | 1184 | | |
| 1185 | + | |
| 1186 | + | |
| 1187 | + | |
1183 | 1188 | | |
1184 | 1189 | | |
1185 | 1190 | | |
| |||
2193 | 2198 | | |
2194 | 2199 | | |
2195 | 2200 | | |
2196 | | - | |
| 2201 | + | |
| 2202 | + | |
2197 | 2203 | | |
2198 | 2204 | | |
2199 | 2205 | | |
| |||
2210 | 2216 | | |
2211 | 2217 | | |
2212 | 2218 | | |
2213 | | - | |
| 2219 | + | |
| 2220 | + | |
2214 | 2221 | | |
2215 | 2222 | | |
2216 | 2223 | | |
| |||
2531 | 2538 | | |
2532 | 2539 | | |
2533 | 2540 | | |
2534 | | - | |
| 2541 | + | |
| 2542 | + | |
2535 | 2543 | | |
2536 | 2544 | | |
2537 | 2545 | | |
| |||
2603 | 2611 | | |
2604 | 2612 | | |
2605 | 2613 | | |
2606 | | - | |
| 2614 | + | |
| 2615 | + | |
2607 | 2616 | | |
2608 | 2617 | | |
2609 | 2618 | | |
| |||
2796 | 2805 | | |
2797 | 2806 | | |
2798 | 2807 | | |
2799 | | - | |
| 2808 | + | |
2800 | 2809 | | |
2801 | 2810 | | |
2802 | 2811 | | |
| |||
4679 | 4688 | | |
4680 | 4689 | | |
4681 | 4690 | | |
| 4691 | + | |
4682 | 4692 | | |
4683 | 4693 | | |
4684 | 4694 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7205 | 7205 | | |
7206 | 7206 | | |
7207 | 7207 | | |
| 7208 | + | |
7208 | 7209 | | |
7209 | 7210 | | |
7210 | 7211 | | |
| |||
8317 | 8318 | | |
8318 | 8319 | | |
8319 | 8320 | | |
| 8321 | + | |
| 8322 | + | |
| 8323 | + | |
8320 | 8324 | | |
8321 | 8325 | | |
8322 | 8326 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1454 | 1454 | | |
1455 | 1455 | | |
1456 | 1456 | | |
| 1457 | + | |
| 1458 | + | |
| 1459 | + | |
1457 | 1460 | | |
1458 | 1461 | | |
1459 | 1462 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
0 commit comments