Skip to content

Commit b1d8fff

Browse files
committed
More review comment fixes.
1 parent 7b1f632 commit b1d8fff

File tree

2 files changed

+46
-2
lines changed

2 files changed

+46
-2
lines changed

llvm/lib/Target/AArch64/AArch64FrameLowering.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2040,7 +2040,8 @@ void AArch64FrameLowering::emitPrologue(MachineFunction &MF,
20402040

20412041
if (windowsRequiresStackProbe(MF, NumBytes + RealignmentPadding)) {
20422042
if (AFI->getSVECalleeSavedStackSize())
2043-
report_fatal_error("SVE callee saves not yet supported with stack probing");
2043+
report_fatal_error(
2044+
"SVE callee saves not yet supported with stack probing");
20442045
uint64_t NumWords = (NumBytes + RealignmentPadding) >> 4;
20452046
if (NeedsWinCFI) {
20462047
HasWinCFI = true;
@@ -2686,7 +2687,8 @@ AArch64FrameLowering::getFrameIndexReferenceFromSP(const MachineFunction &MF,
26862687
bool FPAfterSVECalleeSaves =
26872688
isTargetWindows(MF) && AFI->getSVECalleeSavedStackSize();
26882689
if (MFI.getStackID(FI) == TargetStackID::ScalableVector) {
2689-
if (FPAfterSVECalleeSaves && -ObjectOffset <= AFI->getSVECalleeSavedStackSize())
2690+
if (FPAfterSVECalleeSaves &&
2691+
-ObjectOffset <= (int64_t)AFI->getSVECalleeSavedStackSize())
26902692
return StackOffset::get(0, ObjectOffset);
26912693
return StackOffset::get(-((int64_t)AFI->getCalleeSavedStackSize()),
26922694
ObjectOffset);
@@ -2844,6 +2846,8 @@ StackOffset AArch64FrameLowering::resolveFrameOffsetReference(
28442846
isTargetWindows(MF) && AFI->getSVECalleeSavedStackSize();
28452847

28462848
if (isSVE) {
2849+
assert(-ObjectOffset > (int64_t)AFI->getSVECalleeSavedStackSize() &&
2850+
"Math isn't correct for CSRs with FPAfterSVECalleeSaves");
28472851
StackOffset FPOffset =
28482852
StackOffset::get(-AFI->getCalleeSaveBaseToFrameRecordOffset(), ObjectOffset);
28492853
StackOffset SPOffset =
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
; RUN: llc -mtriple=aarch64-windows-msvc -mattr=+sve -pass-remarks-analysis=stack-frame-layout < %s 2>&1 -o /dev/null | FileCheck %s
2+
3+
; CHECK: Function: f10
4+
; CHECK: Offset: [SP+0-16 x vscale], Type: Spill, Align: 16, Size: vscale x 16
5+
; CHECK: Offset: [SP+0-32 x vscale], Type: Spill, Align: 16, Size: vscale x 16
6+
; CHECK: Offset: [SP+0-48 x vscale], Type: Spill, Align: 16, Size: vscale x 16
7+
; CHECK: Offset: [SP+0-64 x vscale], Type: Spill, Align: 16, Size: vscale x 16
8+
; CHECK: Offset: [SP+0-80 x vscale], Type: Spill, Align: 16, Size: vscale x 16
9+
; CHECK: Offset: [SP+0-96 x vscale], Type: Spill, Align: 16, Size: vscale x 16
10+
; CHECK: Offset: [SP+0-112 x vscale], Type: Spill, Align: 16, Size: vscale x 16
11+
; CHECK: Offset: [SP+0-128 x vscale], Type: Spill, Align: 16, Size: vscale x 16
12+
; CHECK: Offset: [SP+0-144 x vscale], Type: Spill, Align: 16, Size: vscale x 16
13+
; CHECK: Offset: [SP+0-160 x vscale], Type: Spill, Align: 16, Size: vscale x 16
14+
; CHECK: Offset: [SP+0-176 x vscale], Type: Spill, Align: 16, Size: vscale x 16
15+
; CHECK: Offset: [SP+0-192 x vscale], Type: Spill, Align: 16, Size: vscale x 16
16+
; CHECK: Offset: [SP+0-208 x vscale], Type: Spill, Align: 16, Size: vscale x 16
17+
; CHECK: Offset: [SP+0-224 x vscale], Type: Spill, Align: 16, Size: vscale x 16
18+
; CHECK: Offset: [SP+0-240 x vscale], Type: Spill, Align: 16, Size: vscale x 16
19+
; CHECK: Offset: [SP+0-256 x vscale], Type: Spill, Align: 16, Size: vscale x 16
20+
; CHECK: Offset: [SP+0-258 x vscale], Type: Spill, Align: 2, Size: vscale x 2
21+
; CHECK: Offset: [SP+0-260 x vscale], Type: Spill, Align: 2, Size: vscale x 2
22+
; CHECK: Offset: [SP+0-262 x vscale], Type: Spill, Align: 2, Size: vscale x 2
23+
; CHECK: Offset: [SP+0-264 x vscale], Type: Spill, Align: 2, Size: vscale x 2
24+
; CHECK: Offset: [SP+0-266 x vscale], Type: Spill, Align: 2, Size: vscale x 2
25+
; CHECK: Offset: [SP+0-268 x vscale], Type: Spill, Align: 2, Size: vscale x 2
26+
; CHECK: Offset: [SP+0-270 x vscale], Type: Spill, Align: 2, Size: vscale x 2
27+
; CHECK: Offset: [SP+0-272 x vscale], Type: Spill, Align: 2, Size: vscale x 2
28+
; CHECK: Offset: [SP-16-272 x vscale], Type: Spill, Align: 16, Size: 8
29+
; CHECK: Offset: [SP-24-272 x vscale], Type: Spill, Align: 8, Size: 8
30+
; CHECK: Offset: [SP-32-272 x vscale], Type: Spill, Align: 8, Size: 8
31+
; CHECK: Offset: [SP-32-288 x vscale], Type: Variable, Align: 16, Size: vscale x 16
32+
; CHECK: Offset: [SP-48-288 x vscale], Type: Variable, Align: 8, Size: 16
33+
34+
declare void @g10(ptr,ptr)
35+
define void @f10(i64 %n, <vscale x 2 x i64> %x) "frame-pointer"="all" {
36+
%p1 = alloca [2 x i64]
37+
%p2 = alloca <vscale x 2 x i64>
38+
call void @g10(ptr %p1, ptr %p2)
39+
ret void
40+
}

0 commit comments

Comments
 (0)