Skip to content

Commit 26fc26c

Browse files
authored
[RISCV] Simplify computation of VarArgsSaveSize. NFC (#74209)
The computation we use for computing the size already returns 0 when all registers are allocated. We don't need an if to set it to 0. Use the size being 0 to check for whether we need to spill registers or not. I have another change I want to make to this code, but this change seemed to stand on its own. I left the curly braces since I need them for the other change.
1 parent 239bcba commit 26fc26c

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

llvm/lib/Target/RISCV/GISel/RISCVCallLowering.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -441,14 +441,14 @@ void RISCVCallLowering::saveVarArgRegisters(
441441
// Offset of the first variable argument from stack pointer, and size of
442442
// the vararg save area. For now, the varargs save area is either zero or
443443
// large enough to hold a0-a7.
444-
int VaArgOffset, VarArgsSaveSize;
444+
int VaArgOffset;
445+
int VarArgsSaveSize = XLenInBytes * (ArgRegs.size() - Idx);
446+
445447
// If all registers are allocated, then all varargs must be passed on the
446448
// stack and we don't need to save any argregs.
447-
if (ArgRegs.size() == Idx) {
449+
if (VarArgsSaveSize == 0) {
448450
VaArgOffset = Assigner.StackSize;
449-
VarArgsSaveSize = 0;
450451
} else {
451-
VarArgsSaveSize = XLenInBytes * (ArgRegs.size() - Idx);
452452
VaArgOffset = -VarArgsSaveSize;
453453
}
454454

llvm/lib/Target/RISCV/RISCVISelLowering.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17694,15 +17694,14 @@ SDValue RISCVTargetLowering::LowerFormalArguments(
1769417694
// Offset of the first variable argument from stack pointer, and size of
1769517695
// the vararg save area. For now, the varargs save area is either zero or
1769617696
// large enough to hold a0-a7.
17697-
int VaArgOffset, VarArgsSaveSize;
17697+
int VaArgOffset;
17698+
int VarArgsSaveSize = XLenInBytes * (ArgRegs.size() - Idx);
1769817699

1769917700
// If all registers are allocated, then all varargs must be passed on the
1770017701
// stack and we don't need to save any argregs.
17701-
if (ArgRegs.size() == Idx) {
17702+
if (VarArgsSaveSize == 0) {
1770217703
VaArgOffset = CCInfo.getStackSize();
17703-
VarArgsSaveSize = 0;
1770417704
} else {
17705-
VarArgsSaveSize = XLenInBytes * (ArgRegs.size() - Idx);
1770617705
VaArgOffset = -VarArgsSaveSize;
1770717706
}
1770817707

0 commit comments

Comments
 (0)