Skip to content

Commit d9c517b

Browse files
committed
Simplify
1 parent 11b953a commit d9c517b

File tree

2 files changed

+7
-11
lines changed

2 files changed

+7
-11
lines changed

llvm/lib/Target/AArch64/AArch64FrameLowering.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2577,13 +2577,9 @@ void AArch64FrameLowering::emitEpilogue(MachineFunction &MF,
25772577
AFI->getCalleeSaveBaseToFrameRecordOffset()) {
25782578
// If we have have an non-zero offset to the non-SVE CS base we need to
25792579
// compute the base address by subtracting the offest in a temporary
2580-
// register. SVE functions have a "big stack" so there should be at
2581-
// least one scratch register available.
2582-
RegScavenger RS;
2583-
RS.enterBasicBlockEnd(MBB);
2584-
RS.backward(MBBI);
2585-
CalleeSaveBase = RS.FindUnusedReg(&AArch64::GPR64commonRegClass);
2586-
assert(CalleeSaveBase != AArch64::NoRegister);
2580+
// register first (to avoid briefly deallocating the SVE CS).
2581+
CalleeSaveBase = MBB.getParent()->getRegInfo().createVirtualRegister(
2582+
&AArch64::GPR64RegClass);
25872583
emitFrameOffset(MBB, RestoreBegin, DL, CalleeSaveBase, AArch64::FP,
25882584
StackOffset::getFixed(-CalleeSaveBaseOffset), TII,
25892585
MachineInstr::FrameDestroy);

llvm/test/CodeGen/AArch64/stack-hazard.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3771,8 +3771,8 @@ define i32 @svecc_call_realign(<4 x i16> %P0, i32 %P1, i32 %P2, <vscale x 16 x i
37713771
; CHECK64-NEXT: mov w0, #22647 // =0x5877
37723772
; CHECK64-NEXT: movk w0, #59491, lsl #16
37733773
; CHECK64-NEXT: .cfi_restore vg
3774-
; CHECK64-NEXT: sub x1, x29, #64
3775-
; CHECK64-NEXT: addvl sp, x1, #-18
3774+
; CHECK64-NEXT: sub x8, x29, #64
3775+
; CHECK64-NEXT: addvl sp, x8, #-18
37763776
; CHECK64-NEXT: ldr z23, [sp, #2, mul vl] // 16-byte Folded Reload
37773777
; CHECK64-NEXT: ldr z22, [sp, #3, mul vl] // 16-byte Folded Reload
37783778
; CHECK64-NEXT: ldr z21, [sp, #4, mul vl] // 16-byte Folded Reload
@@ -3903,8 +3903,8 @@ define i32 @svecc_call_realign(<4 x i16> %P0, i32 %P1, i32 %P2, <vscale x 16 x i
39033903
; CHECK1024-NEXT: mov w0, #22647 // =0x5877
39043904
; CHECK1024-NEXT: movk w0, #59491, lsl #16
39053905
; CHECK1024-NEXT: .cfi_restore vg
3906-
; CHECK1024-NEXT: sub x1, x29, #1024
3907-
; CHECK1024-NEXT: addvl sp, x1, #-18
3906+
; CHECK1024-NEXT: sub x8, x29, #1024
3907+
; CHECK1024-NEXT: addvl sp, x8, #-18
39083908
; CHECK1024-NEXT: ldr z23, [sp, #2, mul vl] // 16-byte Folded Reload
39093909
; CHECK1024-NEXT: ldr z22, [sp, #3, mul vl] // 16-byte Folded Reload
39103910
; CHECK1024-NEXT: ldr z21, [sp, #4, mul vl] // 16-byte Folded Reload

0 commit comments

Comments
 (0)