[llvm] [RISCV][CFI] add function epilogue cfi information (PR #110810)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 30 08:09:57 PDT 2024
================
@@ -852,14 +879,35 @@ void RISCVFrameLowering::emitEpilogue(MachineFunction &MF,
// normally it's just checking the variable sized object is present or not
// is enough, but we also don't preserve that at prologue/epilogue when
// have vector objects in stack.
- if (RestoreFP) {
+ if (RestoreSPFromFP) {
assert(hasFP(MF) && "frame pointer should not have been eliminated");
RI->adjustReg(MBB, LastFrameDestroy, DL, SPReg, FPReg,
StackOffset::getFixed(-FPOffset), MachineInstr::FrameDestroy,
getStackAlign());
}
+ if (hasFP(MF)) {
+ unsigned CFIIndex = MF.addFrameInst(MCCFIInstruction::cfiDefCfa(
+ nullptr, RI->getDwarfRegNum(SPReg, true), RealStackSize));
+ BuildMI(MBB, LastFrameDestroy, DL, TII->get(TargetOpcode::CFI_INSTRUCTION))
+ .addCFIIndex(CFIIndex)
+ .setMIFlag(MachineInstr::FrameDestroy);
+ }
+
+ if (getLibCallID(MF, CSI) + 1) {
----------------
dlav-sc wrote:
addressed
https://github.com/llvm/llvm-project/pull/110810
More information about the llvm-commits
mailing list