Skip to content

Commit c2a047c

Browse files
committed
Tweaks
1 parent 42d08e6 commit c2a047c

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

llvm/lib/Target/AArch64/AArch64PrologueEpilogue.cpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ SVEFrameSizes AArch64PrologueEpilogueCommon::getSVEStackFrameSizes() const {
362362
StackOffset::getScalable(AFI->getZPRCalleeSavedStackSize());
363363
StackOffset PPRLocalsSize = AFL.getPPRStackSize(MF) - PPRCalleeSavesSize;
364364
StackOffset ZPRLocalsSize = AFL.getZPRStackSize(MF) - ZPRCalleeSavesSize;
365-
if (AFI->hasSplitSVEObjects())
365+
if (SVELayout == SVEStackLayout::Split)
366366
return {{PPRCalleeSavesSize, PPRLocalsSize},
367367
{ZPRCalleeSavesSize, ZPRLocalsSize}};
368368
// For simplicity, attribute all locals to ZPRs when split SVE is disabled.
@@ -765,9 +765,8 @@ void AArch64PrologueEmitter::emitPrologue() {
765765
emitWindowsStackProbe(AfterGPRSavesI, DL, NumBytes, RealignmentPadding);
766766

767767
auto [PPR, ZPR] = getSVEStackFrameSizes();
768-
769-
StackOffset NonSVELocalsSize = StackOffset::getFixed(NumBytes);
770768
StackOffset SVECalleeSavesSize = ZPR.CalleeSavesSize + PPR.CalleeSavesSize;
769+
StackOffset NonSVELocalsSize = StackOffset::getFixed(NumBytes);
771770
StackOffset CFAOffset =
772771
StackOffset::getFixed(MFI.getStackSize()) - NonSVELocalsSize;
773772

@@ -1439,17 +1438,16 @@ void AArch64EpilogueEmitter::emitEpilogue() {
14391438
assert(NumBytes >= 0 && "Negative stack allocation size!?");
14401439

14411440
auto [PPR, ZPR] = getSVEStackFrameSizes();
1442-
StackOffset SVECalleeSavesSize = ZPR.CalleeSavesSize + PPR.CalleeSavesSize;
1443-
StackOffset SVEStackSize =
1444-
SVECalleeSavesSize + PPR.LocalsSize + ZPR.LocalsSize;
1445-
14461441
auto [PPRRange, ZPRRange] = partitionSVECS(
14471442
MBB,
14481443
SVELayout == SVEStackLayout::CalleeSavesAboveFrameRecord
14491444
? MBB.getFirstTerminator()
14501445
: FirstGPRRestoreI,
14511446
PPR.CalleeSavesSize, ZPR.CalleeSavesSize, /*IsEpilogue=*/true);
14521447

1448+
StackOffset SVECalleeSavesSize = ZPR.CalleeSavesSize + PPR.CalleeSavesSize;
1449+
StackOffset SVEStackSize =
1450+
SVECalleeSavesSize + PPR.LocalsSize + ZPR.LocalsSize;
14531451
MachineBasicBlock::iterator RestoreBegin = ZPRRange.Begin;
14541452
MachineBasicBlock::iterator RestoreEnd = PPRRange.End;
14551453

@@ -1489,7 +1487,7 @@ void AArch64EpilogueEmitter::emitEpilogue() {
14891487
if (SVECalleeSavesSize && BaseForSVEDealloc == AArch64::FP) {
14901488
// TODO: Support stack realigment and variable-sized objects.
14911489
assert(
1492-
!AFI->hasSplitSVEObjects() &&
1490+
SVELayout != SVEStackLayout::Split &&
14931491
"unexpected stack realignment or variable sized objects with split "
14941492
"SVE stack objects");
14951493

0 commit comments

Comments
 (0)