File riscv-unwind-info.patch of Package llvm20

From a9c8b145caff9a9691ad3a51dc36659d8581f39d Mon Sep 17 00:00:00 2001
From: Craig Topper <craig.topper@sifive.com>
Date: Thu, 6 Nov 2025 07:09:52 -0800
Subject: [PATCH] [RISCV] Correct the CFA offsets for stack probing. (#166616)

We need to take into account that we may have already done a FirstSPAdjust.

Fixes #164805.
---
 llvm/lib/Target/RISCV/RISCVFrameLowering.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
index 6f4c1e16190f..e49acadabde8 100644
--- a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
@@ -678,6 +678,8 @@ void RISCVFrameLowering::allocateStack(MachineBasicBlock &MBB,
 
   // Unroll the probe loop depending on the number of iterations.
   if (Offset < ProbeSize * 5) {
+    uint64_t CFAAdjust = RealStackSize - Offset;
+
     uint64_t CurrentOffset = 0;
     while (CurrentOffset + ProbeSize <= Offset) {
       RI->adjustReg(MBB, MBBI, DL, SPReg, SPReg,
@@ -694,7 +696,7 @@ void RISCVFrameLowering::allocateStack(MachineBasicBlock &MBB,
       if (EmitCFI) {
         // Emit ".cfi_def_cfa_offset CurrentOffset"
         unsigned CFIIndex = MF.addFrameInst(
-            MCCFIInstruction::cfiDefCfaOffset(nullptr, CurrentOffset));
+            MCCFIInstruction::cfiDefCfaOffset(nullptr, CurrentOffset + CFAAdjust));
         BuildMI(MBB, MBBI, DL, TII->get(TargetOpcode::CFI_INSTRUCTION))
             .addCFIIndex(CFIIndex)
             .setMIFlag(MachineInstr::FrameSetup);
@@ -709,7 +711,7 @@ void RISCVFrameLowering::allocateStack(MachineBasicBlock &MBB,
       if (EmitCFI) {
         // Emit ".cfi_def_cfa_offset Offset"
         unsigned CFIIndex =
-            MF.addFrameInst(MCCFIInstruction::cfiDefCfaOffset(nullptr, Offset));
+            MF.addFrameInst(MCCFIInstruction::cfiDefCfaOffset(nullptr, RealStackSize));
         BuildMI(MBB, MBBI, DL, TII->get(TargetOpcode::CFI_INSTRUCTION))
             .addCFIIndex(CFIIndex)
             .setMIFlag(MachineInstr::FrameSetup);
-- 
2.51.2

openSUSE Build Service is sponsored by