[VENTUS][fix] Fix epilog information restoring error
This commit is contained in:
parent
2ae501e91b
commit
5fb025744a
|
@ -457,6 +457,7 @@ void RISCVFrameLowering::emitEpilogue(MachineFunction &MF,
|
||||||
MachineBasicBlock &MBB) const {
|
MachineBasicBlock &MBB) const {
|
||||||
const RISCVRegisterInfo *RI = STI.getRegisterInfo();
|
const RISCVRegisterInfo *RI = STI.getRegisterInfo();
|
||||||
MachineFrameInfo &MFI = MF.getFrameInfo();
|
MachineFrameInfo &MFI = MF.getFrameInfo();
|
||||||
|
const RISCVInstrInfo *TII = STI.getInstrInfo();
|
||||||
Register SPReg = getSPReg(STI);
|
Register SPReg = getSPReg(STI);
|
||||||
Register TPReg = getTPReg(STI);
|
Register TPReg = getTPReg(STI);
|
||||||
|
|
||||||
|
@ -496,10 +497,15 @@ void RISCVFrameLowering::emitEpilogue(MachineFunction &MF,
|
||||||
RI->adjustReg(MBB, MBBI, DL, SPReg, SPReg,
|
RI->adjustReg(MBB, MBBI, DL, SPReg, SPReg,
|
||||||
StackOffset::getFixed(-SPStackSize),
|
StackOffset::getFixed(-SPStackSize),
|
||||||
MachineInstr::FrameDestroy, getStackAlign());
|
MachineInstr::FrameDestroy, getStackAlign());
|
||||||
if(TPStackSize)
|
if(TPStackSize) {
|
||||||
RI->adjustReg(MBB, MBBI, DL, TPReg, TPReg,
|
RI->adjustReg(MBB, MBBI, DL, TPReg, TPReg,
|
||||||
StackOffset::getFixed(-TPStackSize),
|
StackOffset::getFixed(-TPStackSize),
|
||||||
MachineInstr::FrameDestroy, getStackAlign());
|
MachineInstr::FrameDestroy, getStackAlign());
|
||||||
|
BuildMI(MBB, MBBI, DL, TII->get(RISCV::VMV_V_X),
|
||||||
|
RI->getPrivateMemoryBaseRegister(MF))
|
||||||
|
.addReg(TPReg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Emit epilogue for shadow call stack.
|
// Emit epilogue for shadow call stack.
|
||||||
emitSCSEpilogue(MF, MBB, MBBI, DL);
|
emitSCSEpilogue(MF, MBB, MBBI, DL);
|
||||||
|
|
Loading…
Reference in New Issue