diff --git a/llvm/lib/Target/RISCV/GISel/RISCVCallLowering.cpp b/llvm/lib/Target/RISCV/GISel/RISCVCallLowering.cpp index bd602635dd5f7..9e96fba069c4e 100644 --- a/llvm/lib/Target/RISCV/GISel/RISCVCallLowering.cpp +++ b/llvm/lib/Target/RISCV/GISel/RISCVCallLowering.cpp @@ -441,14 +441,14 @@ void RISCVCallLowering::saveVarArgRegisters( // Offset of the first variable argument from stack pointer, and size of // the vararg save area. For now, the varargs save area is either zero or // large enough to hold a0-a7. - int VaArgOffset, VarArgsSaveSize; + int VaArgOffset; + int VarArgsSaveSize = XLenInBytes * (ArgRegs.size() - Idx); + // If all registers are allocated, then all varargs must be passed on the // stack and we don't need to save any argregs. - if (ArgRegs.size() == Idx) { + if (VarArgsSaveSize == 0) { VaArgOffset = Assigner.StackSize; - VarArgsSaveSize = 0; } else { - VarArgsSaveSize = XLenInBytes * (ArgRegs.size() - Idx); VaArgOffset = -VarArgsSaveSize; } diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp index 241bc96766f29..cf1b11c14b6d0 100644 --- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp +++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp @@ -17694,15 +17694,14 @@ SDValue RISCVTargetLowering::LowerFormalArguments( // Offset of the first variable argument from stack pointer, and size of // the vararg save area. For now, the varargs save area is either zero or // large enough to hold a0-a7. - int VaArgOffset, VarArgsSaveSize; + int VaArgOffset; + int VarArgsSaveSize = XLenInBytes * (ArgRegs.size() - Idx); // If all registers are allocated, then all varargs must be passed on the // stack and we don't need to save any argregs. - if (ArgRegs.size() == Idx) { + if (VarArgsSaveSize == 0) { VaArgOffset = CCInfo.getStackSize(); - VarArgsSaveSize = 0; } else { - VarArgsSaveSize = XLenInBytes * (ArgRegs.size() - Idx); VaArgOffset = -VarArgsSaveSize; }