Add rules to restore RRA
This commit is contained in:
parent
5aceff62cb
commit
bbea044c7d
@ -21,9 +21,10 @@ void FootFrameLowering::emitPrologue(MachineFunction &MF,
|
||||
|
||||
int FI = MF.getInfo<FootMachineFunctionInfo>()->getReturnAddressFrameIndex();
|
||||
|
||||
unsigned CFIIndex = MF.addFrameInst(MCCFIInstruction::createDefCfaRegister(
|
||||
nullptr, MF.getRegInfo().getTargetRegisterInfo()->getDwarfRegNum(
|
||||
Foot::RSP, true)));
|
||||
unsigned int CFIIndex =
|
||||
MF.addFrameInst(MCCFIInstruction::createDefCfaRegister(
|
||||
nullptr, MF.getRegInfo().getTargetRegisterInfo()->getDwarfRegNum(
|
||||
Foot::RSP, true)));
|
||||
BuildMI(MBB, MBB.begin(), DebugLoc(), TII->get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex);
|
||||
|
||||
@ -31,6 +32,13 @@ void FootFrameLowering::emitPrologue(MachineFunction &MF,
|
||||
.addFrameIndex(FI)
|
||||
.addReg(Foot::RRA)
|
||||
.addImm(0);
|
||||
unsigned int RRADwarfRegNum =
|
||||
MF.getRegInfo().getTargetRegisterInfo()->getDwarfRegNum(Foot::RRA, false);
|
||||
int Offset = MFI.getObjectOffset(FI);
|
||||
CFIIndex = MF.addFrameInst(
|
||||
MCCFIInstruction::createOffset(nullptr, RRADwarfRegNum, Offset));
|
||||
BuildMI(MBB, MBB.begin(), DebugLoc(), TII->get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex);
|
||||
|
||||
unsigned NumBytes = MFI.getStackSize();
|
||||
|
||||
@ -51,11 +59,11 @@ void FootFrameLowering::emitPrologue(MachineFunction &MF,
|
||||
.addImm(NumBytes);
|
||||
}
|
||||
|
||||
unsigned int CFIOffsetIndex = MF.addFrameInst(
|
||||
CFIIndex = MF.addFrameInst(
|
||||
MCCFIInstruction::createAdjustCfaOffset(nullptr, NumBytes));
|
||||
BuildMI(MBB, MBB.getFirstTerminator(), DebugLoc(),
|
||||
TII->get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIOffsetIndex);
|
||||
.addCFIIndex(CFIIndex);
|
||||
}
|
||||
}
|
||||
|
||||
@ -132,6 +140,7 @@ void FootFrameLowering::determineCalleeSaves(MachineFunction &MF,
|
||||
TargetFrameLowering::determineCalleeSaves(MF, SavedRegs, RS);
|
||||
|
||||
SavedRegs.set(Foot::RSP);
|
||||
SavedRegs.set(Foot::RRA);
|
||||
|
||||
MachineFrameInfo &MFI = MF.getFrameInfo();
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user