@@ -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