Skip to content

Commit a8d8c34

Browse files
Update after the bugfix about writing below SP
1 parent 9972bf6 commit a8d8c34

File tree

2 files changed

+10
-17
lines changed

2 files changed

+10
-17
lines changed

llvm/lib/Target/AArch64/AArch64ISelLowering.cpp

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2726,15 +2726,8 @@ AArch64TargetLowering::EmitDynamicProbedAlloc(MachineInstr &MI,
27262726
const AArch64InstrInfo &TII =
27272727
*MF.getSubtarget<AArch64Subtarget>().getInstrInfo();
27282728
Register TargetReg = MI.getOperand(0).getReg();
2729-
MachineBasicBlock::iterator NextInst =
2730-
TII.insertStackProbingLoop(MBBI, AArch64::SP, TargetReg);
2731-
2732-
// MOV SP, TargetReg
2733-
BuildMI(*NextInst->getParent(), std::next(NextInst), DL,
2734-
TII.get(AArch64::ADDXri), AArch64::SP)
2735-
.addReg(TargetReg)
2736-
.addImm(0)
2737-
.addImm(AArch64_AM::getShifterImm(AArch64_AM::LSL, 0));
2729+
MachineBasicBlock::iterator NextInst = TII.probedStackAlloc(MBBI, TargetReg);
2730+
27382731
MI.eraseFromParent();
27392732
return NextInst->getParent();
27402733
}

llvm/test/CodeGen/AArch64/stack-probing-dynamic.ll

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ define void @dynamic(i64 %size, ptr %out) #0 {
2626
; CHECK-NEXT: str xzr, [sp]
2727
; CHECK-NEXT: b .LBB0_1
2828
; CHECK-NEXT: .LBB0_3:
29-
; CHECK-NEXT: str xzr, [x8]
3029
; CHECK-NEXT: mov sp, x8
30+
; CHECK-NEXT: str xzr, [sp]
3131
; CHECK-NEXT: str x8, [x1]
3232
; CHECK-NEXT: mov sp, x29
3333
; CHECK-NEXT: .cfi_def_cfa wsp, 16
@@ -70,8 +70,8 @@ define void @dynamic_fixed(i64 %size, ptr %out1, ptr %out2) #0 {
7070
; CHECK-NEXT: str xzr, [sp]
7171
; CHECK-NEXT: b .LBB1_1
7272
; CHECK-NEXT: .LBB1_3:
73-
; CHECK-NEXT: str xzr, [x8]
7473
; CHECK-NEXT: mov sp, x8
74+
; CHECK-NEXT: str xzr, [sp]
7575
; CHECK-NEXT: str x8, [x2]
7676
; CHECK-NEXT: mov sp, x29
7777
; CHECK-NEXT: .cfi_def_cfa wsp, 16
@@ -120,8 +120,8 @@ define void @dynamic_align_64(i64 %size, ptr %out) #0 {
120120
; CHECK-NEXT: str xzr, [sp]
121121
; CHECK-NEXT: b .LBB2_1
122122
; CHECK-NEXT: .LBB2_3:
123-
; CHECK-NEXT: str xzr, [x8]
124123
; CHECK-NEXT: mov sp, x8
124+
; CHECK-NEXT: str xzr, [sp]
125125
; CHECK-NEXT: str x8, [x1]
126126
; CHECK-NEXT: mov sp, x29
127127
; CHECK-NEXT: .cfi_def_cfa wsp, 32
@@ -163,12 +163,12 @@ define void @dynamic_align_8192(i64 %size, ptr %out) #0 {
163163
; CHECK-NEXT: str xzr, [sp]
164164
; CHECK-NEXT: b .LBB3_1
165165
; CHECK-NEXT: .LBB3_3:
166-
; CHECK-NEXT: str xzr, [x9]
167166
; CHECK-NEXT: mov sp, x9
168167
; CHECK-NEXT: add x9, x0, #15
169168
; CHECK-NEXT: mov x8, sp
170-
; CHECK-NEXT: mov x19, sp
169+
; CHECK-NEXT: str xzr, [sp]
171170
; CHECK-NEXT: and x9, x9, #0xfffffffffffffff0
171+
; CHECK-NEXT: mov x19, sp
172172
; CHECK-NEXT: sub x8, x8, x9
173173
; CHECK-NEXT: and x8, x8, #0xffffffffffffe000
174174
; CHECK-NEXT: .LBB3_4: // =>This Inner Loop Header: Depth=1
@@ -179,8 +179,8 @@ define void @dynamic_align_8192(i64 %size, ptr %out) #0 {
179179
; CHECK-NEXT: str xzr, [sp]
180180
; CHECK-NEXT: b .LBB3_4
181181
; CHECK-NEXT: .LBB3_6:
182-
; CHECK-NEXT: str xzr, [x8]
183182
; CHECK-NEXT: mov sp, x8
183+
; CHECK-NEXT: str xzr, [sp]
184184
; CHECK-NEXT: str x8, [x1]
185185
; CHECK-NEXT: mov sp, x29
186186
; CHECK-NEXT: .cfi_def_cfa wsp, 32
@@ -219,8 +219,8 @@ define void @dynamic_64k_guard(i64 %size, ptr %out) #0 "stack-probe-size"="65536
219219
; CHECK-NEXT: str xzr, [sp]
220220
; CHECK-NEXT: b .LBB4_1
221221
; CHECK-NEXT: .LBB4_3:
222-
; CHECK-NEXT: str xzr, [x8]
223222
; CHECK-NEXT: mov sp, x8
223+
; CHECK-NEXT: str xzr, [sp]
224224
; CHECK-NEXT: str x8, [x1]
225225
; CHECK-NEXT: mov sp, x29
226226
; CHECK-NEXT: .cfi_def_cfa wsp, 16
@@ -263,8 +263,8 @@ define void @no_reserved_call_frame(i64 %n) #0 {
263263
; CHECK-NEXT: str xzr, [sp]
264264
; CHECK-NEXT: b .LBB5_1
265265
; CHECK-NEXT: .LBB5_3: // %entry
266-
; CHECK-NEXT: str xzr, [x0]
267266
; CHECK-NEXT: mov sp, x0
267+
; CHECK-NEXT: str xzr, [sp]
268268
; CHECK-NEXT: sub sp, sp, #1104
269269
; CHECK-NEXT: str xzr, [sp]
270270
; CHECK-NEXT: bl callee_stack_args

0 commit comments

Comments
 (0)