Skip to content

Commit c08b90c

Browse files
committed
[RISCV] Lower the TransientStackAlignment to the ABI alignment for rv32e/rv64e.
I don't think the transient alignment needs to be larger than the ABI alignment.
1 parent 7192c22 commit c08b90c

File tree

5 files changed

+496
-496
lines changed

5 files changed

+496
-496
lines changed

llvm/lib/Target/RISCV/RISCVFrameLowering.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ static Align getABIStackAlignment(RISCVABI::ABI ABI) {
3636
}
3737

3838
RISCVFrameLowering::RISCVFrameLowering(const RISCVSubtarget &STI)
39-
: TargetFrameLowering(StackGrowsDown,
40-
getABIStackAlignment(STI.getTargetABI()),
41-
/*LocalAreaOffset=*/0,
42-
/*TransientStackAlignment=*/Align(16)),
39+
: TargetFrameLowering(
40+
StackGrowsDown, getABIStackAlignment(STI.getTargetABI()),
41+
/*LocalAreaOffset=*/0,
42+
/*TransientStackAlignment=*/getABIStackAlignment(STI.getTargetABI())),
4343
STI(STI) {}
4444

4545
static const MCPhysReg AllPopRegs[] = {

llvm/test/CodeGen/RISCV/callee-saved-gprs.ll

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -150,24 +150,24 @@ define void @callee() nounwind {
150150
;
151151
; RV32I-ILP32E-LABEL: callee:
152152
; RV32I-ILP32E: # %bb.0:
153-
; RV32I-ILP32E-NEXT: addi sp, sp, -48
154-
; RV32I-ILP32E-NEXT: sw ra, 44(sp) # 4-byte Folded Spill
155-
; RV32I-ILP32E-NEXT: sw s0, 40(sp) # 4-byte Folded Spill
156-
; RV32I-ILP32E-NEXT: sw s1, 36(sp) # 4-byte Folded Spill
153+
; RV32I-ILP32E-NEXT: addi sp, sp, -36
154+
; RV32I-ILP32E-NEXT: sw ra, 32(sp) # 4-byte Folded Spill
155+
; RV32I-ILP32E-NEXT: sw s0, 28(sp) # 4-byte Folded Spill
156+
; RV32I-ILP32E-NEXT: sw s1, 24(sp) # 4-byte Folded Spill
157157
; RV32I-ILP32E-NEXT: lui a6, %hi(var)
158158
; RV32I-ILP32E-NEXT: lw a0, %lo(var)(a6)
159-
; RV32I-ILP32E-NEXT: sw a0, 32(sp) # 4-byte Folded Spill
159+
; RV32I-ILP32E-NEXT: sw a0, 20(sp) # 4-byte Folded Spill
160160
; RV32I-ILP32E-NEXT: lw a0, %lo(var+4)(a6)
161-
; RV32I-ILP32E-NEXT: sw a0, 28(sp) # 4-byte Folded Spill
161+
; RV32I-ILP32E-NEXT: sw a0, 16(sp) # 4-byte Folded Spill
162162
; RV32I-ILP32E-NEXT: lw a0, %lo(var+8)(a6)
163-
; RV32I-ILP32E-NEXT: sw a0, 24(sp) # 4-byte Folded Spill
163+
; RV32I-ILP32E-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
164164
; RV32I-ILP32E-NEXT: lw a0, %lo(var+12)(a6)
165-
; RV32I-ILP32E-NEXT: sw a0, 20(sp) # 4-byte Folded Spill
165+
; RV32I-ILP32E-NEXT: sw a0, 8(sp) # 4-byte Folded Spill
166166
; RV32I-ILP32E-NEXT: addi a5, a6, %lo(var)
167167
; RV32I-ILP32E-NEXT: lw a0, 16(a5)
168-
; RV32I-ILP32E-NEXT: sw a0, 16(sp) # 4-byte Folded Spill
168+
; RV32I-ILP32E-NEXT: sw a0, 4(sp) # 4-byte Folded Spill
169169
; RV32I-ILP32E-NEXT: lw a0, 20(a5)
170-
; RV32I-ILP32E-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
170+
; RV32I-ILP32E-NEXT: sw a0, 0(sp) # 4-byte Folded Spill
171171
; RV32I-ILP32E-NEXT: lw t0, 24(a5)
172172
; RV32I-ILP32E-NEXT: lw t1, 28(a5)
173173
; RV32I-ILP32E-NEXT: lw t2, 32(a5)
@@ -220,22 +220,22 @@ define void @callee() nounwind {
220220
; RV32I-ILP32E-NEXT: sw t2, 32(a5)
221221
; RV32I-ILP32E-NEXT: sw t1, 28(a5)
222222
; RV32I-ILP32E-NEXT: sw t0, 24(a5)
223-
; RV32I-ILP32E-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
223+
; RV32I-ILP32E-NEXT: lw a0, 0(sp) # 4-byte Folded Reload
224224
; RV32I-ILP32E-NEXT: sw a0, 20(a5)
225-
; RV32I-ILP32E-NEXT: lw a0, 16(sp) # 4-byte Folded Reload
225+
; RV32I-ILP32E-NEXT: lw a0, 4(sp) # 4-byte Folded Reload
226226
; RV32I-ILP32E-NEXT: sw a0, 16(a5)
227-
; RV32I-ILP32E-NEXT: lw a0, 20(sp) # 4-byte Folded Reload
227+
; RV32I-ILP32E-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
228228
; RV32I-ILP32E-NEXT: sw a0, %lo(var+12)(a6)
229-
; RV32I-ILP32E-NEXT: lw a0, 24(sp) # 4-byte Folded Reload
229+
; RV32I-ILP32E-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
230230
; RV32I-ILP32E-NEXT: sw a0, %lo(var+8)(a6)
231-
; RV32I-ILP32E-NEXT: lw a0, 28(sp) # 4-byte Folded Reload
231+
; RV32I-ILP32E-NEXT: lw a0, 16(sp) # 4-byte Folded Reload
232232
; RV32I-ILP32E-NEXT: sw a0, %lo(var+4)(a6)
233-
; RV32I-ILP32E-NEXT: lw a0, 32(sp) # 4-byte Folded Reload
233+
; RV32I-ILP32E-NEXT: lw a0, 20(sp) # 4-byte Folded Reload
234234
; RV32I-ILP32E-NEXT: sw a0, %lo(var)(a6)
235-
; RV32I-ILP32E-NEXT: lw ra, 44(sp) # 4-byte Folded Reload
236-
; RV32I-ILP32E-NEXT: lw s0, 40(sp) # 4-byte Folded Reload
237-
; RV32I-ILP32E-NEXT: lw s1, 36(sp) # 4-byte Folded Reload
238-
; RV32I-ILP32E-NEXT: addi sp, sp, 48
235+
; RV32I-ILP32E-NEXT: lw ra, 32(sp) # 4-byte Folded Reload
236+
; RV32I-ILP32E-NEXT: lw s0, 28(sp) # 4-byte Folded Reload
237+
; RV32I-ILP32E-NEXT: lw s1, 24(sp) # 4-byte Folded Reload
238+
; RV32I-ILP32E-NEXT: addi sp, sp, 36
239239
; RV32I-ILP32E-NEXT: ret
240240
;
241241
; RV32I-WITH-FP-LABEL: callee:
@@ -659,24 +659,24 @@ define void @callee() nounwind {
659659
;
660660
; RV64I-LP64E-LABEL: callee:
661661
; RV64I-LP64E: # %bb.0:
662-
; RV64I-LP64E-NEXT: addi sp, sp, -80
663-
; RV64I-LP64E-NEXT: sd ra, 72(sp) # 8-byte Folded Spill
664-
; RV64I-LP64E-NEXT: sd s0, 64(sp) # 8-byte Folded Spill
665-
; RV64I-LP64E-NEXT: sd s1, 56(sp) # 8-byte Folded Spill
662+
; RV64I-LP64E-NEXT: addi sp, sp, -72
663+
; RV64I-LP64E-NEXT: sd ra, 64(sp) # 8-byte Folded Spill
664+
; RV64I-LP64E-NEXT: sd s0, 56(sp) # 8-byte Folded Spill
665+
; RV64I-LP64E-NEXT: sd s1, 48(sp) # 8-byte Folded Spill
666666
; RV64I-LP64E-NEXT: lui a6, %hi(var)
667667
; RV64I-LP64E-NEXT: lw a0, %lo(var)(a6)
668-
; RV64I-LP64E-NEXT: sd a0, 48(sp) # 8-byte Folded Spill
669-
; RV64I-LP64E-NEXT: lw a0, %lo(var+4)(a6)
670668
; RV64I-LP64E-NEXT: sd a0, 40(sp) # 8-byte Folded Spill
671-
; RV64I-LP64E-NEXT: lw a0, %lo(var+8)(a6)
669+
; RV64I-LP64E-NEXT: lw a0, %lo(var+4)(a6)
672670
; RV64I-LP64E-NEXT: sd a0, 32(sp) # 8-byte Folded Spill
673-
; RV64I-LP64E-NEXT: lw a0, %lo(var+12)(a6)
671+
; RV64I-LP64E-NEXT: lw a0, %lo(var+8)(a6)
674672
; RV64I-LP64E-NEXT: sd a0, 24(sp) # 8-byte Folded Spill
673+
; RV64I-LP64E-NEXT: lw a0, %lo(var+12)(a6)
674+
; RV64I-LP64E-NEXT: sd a0, 16(sp) # 8-byte Folded Spill
675675
; RV64I-LP64E-NEXT: addi a5, a6, %lo(var)
676676
; RV64I-LP64E-NEXT: lw a0, 16(a5)
677-
; RV64I-LP64E-NEXT: sd a0, 16(sp) # 8-byte Folded Spill
678-
; RV64I-LP64E-NEXT: lw a0, 20(a5)
679677
; RV64I-LP64E-NEXT: sd a0, 8(sp) # 8-byte Folded Spill
678+
; RV64I-LP64E-NEXT: lw a0, 20(a5)
679+
; RV64I-LP64E-NEXT: sd a0, 0(sp) # 8-byte Folded Spill
680680
; RV64I-LP64E-NEXT: lw t0, 24(a5)
681681
; RV64I-LP64E-NEXT: lw t1, 28(a5)
682682
; RV64I-LP64E-NEXT: lw t2, 32(a5)
@@ -729,22 +729,22 @@ define void @callee() nounwind {
729729
; RV64I-LP64E-NEXT: sw t2, 32(a5)
730730
; RV64I-LP64E-NEXT: sw t1, 28(a5)
731731
; RV64I-LP64E-NEXT: sw t0, 24(a5)
732-
; RV64I-LP64E-NEXT: ld a0, 8(sp) # 8-byte Folded Reload
732+
; RV64I-LP64E-NEXT: ld a0, 0(sp) # 8-byte Folded Reload
733733
; RV64I-LP64E-NEXT: sw a0, 20(a5)
734-
; RV64I-LP64E-NEXT: ld a0, 16(sp) # 8-byte Folded Reload
734+
; RV64I-LP64E-NEXT: ld a0, 8(sp) # 8-byte Folded Reload
735735
; RV64I-LP64E-NEXT: sw a0, 16(a5)
736-
; RV64I-LP64E-NEXT: ld a0, 24(sp) # 8-byte Folded Reload
736+
; RV64I-LP64E-NEXT: ld a0, 16(sp) # 8-byte Folded Reload
737737
; RV64I-LP64E-NEXT: sw a0, %lo(var+12)(a6)
738-
; RV64I-LP64E-NEXT: ld a0, 32(sp) # 8-byte Folded Reload
738+
; RV64I-LP64E-NEXT: ld a0, 24(sp) # 8-byte Folded Reload
739739
; RV64I-LP64E-NEXT: sw a0, %lo(var+8)(a6)
740-
; RV64I-LP64E-NEXT: ld a0, 40(sp) # 8-byte Folded Reload
740+
; RV64I-LP64E-NEXT: ld a0, 32(sp) # 8-byte Folded Reload
741741
; RV64I-LP64E-NEXT: sw a0, %lo(var+4)(a6)
742-
; RV64I-LP64E-NEXT: ld a0, 48(sp) # 8-byte Folded Reload
742+
; RV64I-LP64E-NEXT: ld a0, 40(sp) # 8-byte Folded Reload
743743
; RV64I-LP64E-NEXT: sw a0, %lo(var)(a6)
744-
; RV64I-LP64E-NEXT: ld ra, 72(sp) # 8-byte Folded Reload
745-
; RV64I-LP64E-NEXT: ld s0, 64(sp) # 8-byte Folded Reload
746-
; RV64I-LP64E-NEXT: ld s1, 56(sp) # 8-byte Folded Reload
747-
; RV64I-LP64E-NEXT: addi sp, sp, 80
744+
; RV64I-LP64E-NEXT: ld ra, 64(sp) # 8-byte Folded Reload
745+
; RV64I-LP64E-NEXT: ld s0, 56(sp) # 8-byte Folded Reload
746+
; RV64I-LP64E-NEXT: ld s1, 48(sp) # 8-byte Folded Reload
747+
; RV64I-LP64E-NEXT: addi sp, sp, 72
748748
; RV64I-LP64E-NEXT: ret
749749
;
750750
; RV64I-WITH-FP-LABEL: callee:

0 commit comments

Comments
 (0)