mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
[MC] Change MCCFIInstruction::createDefCfaOffset to cfiDefCfaOffset which does not negate Offset
The negative Offset has caused a bunch of problems and confused quite a few call sites. Delete the unneeded negation and fix all call sites.
This commit is contained in:
parent
985b9e2acb
commit
ad1024e5f7
@ -496,8 +496,8 @@ public:
|
||||
/// .cfi_def_cfa_offset modifies a rule for computing CFA. Register
|
||||
/// remains the same, but offset is new. Note that it is the absolute offset
|
||||
/// that will be added to a defined register to the compute CFA address.
|
||||
static MCCFIInstruction createDefCfaOffset(MCSymbol *L, int Offset) {
|
||||
return MCCFIInstruction(OpDefCfaOffset, L, 0, -Offset, "");
|
||||
static MCCFIInstruction cfiDefCfaOffset(MCSymbol *L, int Offset) {
|
||||
return MCCFIInstruction(OpDefCfaOffset, L, 0, Offset, "");
|
||||
}
|
||||
|
||||
/// .cfi_adjust_cfa_offset Same as .cfi_def_cfa_offset, but
|
||||
|
@ -322,9 +322,8 @@ bool CFIInstrInserter::insertCFIInstrs(MachineFunction &MF) {
|
||||
// of this block, add a def_cfa_offset instruction with the correct
|
||||
// offset for this block.
|
||||
} else {
|
||||
unsigned CFIIndex =
|
||||
MF.addFrameInst(MCCFIInstruction::createDefCfaOffset(
|
||||
nullptr, -getCorrectCFAOffset(&MBB)));
|
||||
unsigned CFIIndex = MF.addFrameInst(MCCFIInstruction::cfiDefCfaOffset(
|
||||
nullptr, getCorrectCFAOffset(&MBB)));
|
||||
BuildMI(*MBBInfo.MBB, MBBI, DL, TII->get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex);
|
||||
}
|
||||
|
@ -2242,9 +2242,8 @@ bool MIParser::parseCFIOperand(MachineOperand &Dest) {
|
||||
case MIToken::kw_cfi_def_cfa_offset:
|
||||
if (parseCFIOffset(Offset))
|
||||
return true;
|
||||
// NB: MCCFIInstruction::createDefCfaOffset negates the offset.
|
||||
CFIIndex = MF.addFrameInst(
|
||||
MCCFIInstruction::createDefCfaOffset(nullptr, -Offset));
|
||||
CFIIndex =
|
||||
MF.addFrameInst(MCCFIInstruction::cfiDefCfaOffset(nullptr, Offset));
|
||||
break;
|
||||
case MIToken::kw_cfi_adjust_cfa_offset:
|
||||
if (parseCFIOffset(Offset))
|
||||
|
@ -472,7 +472,7 @@ void MCStreamer::emitCFIDefCfa(int64_t Register, int64_t Offset) {
|
||||
void MCStreamer::emitCFIDefCfaOffset(int64_t Offset) {
|
||||
MCSymbol *Label = emitCFILabel();
|
||||
MCCFIInstruction Instruction =
|
||||
MCCFIInstruction::createDefCfaOffset(Label, Offset);
|
||||
MCCFIInstruction::cfiDefCfaOffset(Label, -Offset);
|
||||
MCDwarfFrameInfo *CurFrame = getCurrentDwarfFrameInfo();
|
||||
if (!CurFrame)
|
||||
return;
|
||||
|
@ -994,11 +994,11 @@ void AArch64FrameLowering::emitPrologue(MachineFunction &MF,
|
||||
// Label used to tie together the PROLOG_LABEL and the MachineMoves.
|
||||
MCSymbol *FrameLabel = MMI.getContext().createTempSymbol();
|
||||
// Encode the stack size of the leaf function.
|
||||
unsigned CFIIndex = MF.addFrameInst(
|
||||
MCCFIInstruction::createDefCfaOffset(FrameLabel, -NumBytes));
|
||||
BuildMI(MBB, MBBI, DL, TII->get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex)
|
||||
.setMIFlags(MachineInstr::FrameSetup);
|
||||
unsigned CFIIndex = MF.addFrameInst(
|
||||
MCCFIInstruction::cfiDefCfaOffset(FrameLabel, NumBytes));
|
||||
BuildMI(MBB, MBBI, DL, TII->get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex)
|
||||
.setMIFlags(MachineInstr::FrameSetup);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1357,7 +1357,7 @@ void AArch64FrameLowering::emitPrologue(MachineFunction &MF,
|
||||
} else {
|
||||
// Encode the stack size of the leaf function.
|
||||
unsigned CFIIndex = MF.addFrameInst(
|
||||
MCCFIInstruction::createDefCfaOffset(nullptr, -MFI.getStackSize()));
|
||||
MCCFIInstruction::cfiDefCfaOffset(nullptr, MFI.getStackSize()));
|
||||
BuildMI(MBB, MBBI, DL, TII->get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex)
|
||||
.setMIFlags(MachineInstr::FrameSetup);
|
||||
|
@ -6544,7 +6544,7 @@ void AArch64InstrInfo::buildOutlinedFrame(
|
||||
|
||||
// Add a CFI saying the stack was moved 16 B down.
|
||||
int64_t StackPosEntry =
|
||||
MF.addFrameInst(MCCFIInstruction::createDefCfaOffset(nullptr, -16));
|
||||
MF.addFrameInst(MCCFIInstruction::cfiDefCfaOffset(nullptr, 16));
|
||||
BuildMI(MBB, It, DebugLoc(), get(AArch64::CFI_INSTRUCTION))
|
||||
.addCFIIndex(StackPosEntry)
|
||||
.setMIFlags(MachineInstr::FrameSetup);
|
||||
|
@ -196,7 +196,7 @@ void ARCFrameLowering::emitPrologue(MachineFunction &MF,
|
||||
// .cfi_offset fp, -StackSize
|
||||
// .cfi_offset blink, -StackSize+4
|
||||
unsigned CFIIndex = MF.addFrameInst(
|
||||
MCCFIInstruction::createDefCfaOffset(nullptr, -MFI.getStackSize()));
|
||||
MCCFIInstruction::cfiDefCfaOffset(nullptr, MFI.getStackSize()));
|
||||
BuildMI(MBB, MBBI, dl, TII->get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex)
|
||||
.setMIFlags(MachineInstr::FrameSetup);
|
||||
|
@ -235,9 +235,9 @@ struct StackAdjustingInsts {
|
||||
if (HasFP && !Info.BeforeFPSet)
|
||||
return;
|
||||
|
||||
CFAOffset -= Info.SPAdjust;
|
||||
CFAOffset += Info.SPAdjust;
|
||||
unsigned CFIIndex = MF.addFrameInst(
|
||||
MCCFIInstruction::createDefCfaOffset(nullptr, CFAOffset));
|
||||
MCCFIInstruction::cfiDefCfaOffset(nullptr, CFAOffset));
|
||||
BuildMI(MBB, std::next(Info.I), dl,
|
||||
TII.get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex)
|
||||
@ -2410,8 +2410,7 @@ void ARMFrameLowering::adjustForSegmentedStacks(
|
||||
|
||||
// Emit the relevant DWARF information about the change in stack pointer as
|
||||
// well as where to find both r4 and r5 (the callee-save registers)
|
||||
CFIIndex =
|
||||
MF.addFrameInst(MCCFIInstruction::createDefCfaOffset(nullptr, -8));
|
||||
CFIIndex = MF.addFrameInst(MCCFIInstruction::cfiDefCfaOffset(nullptr, 8));
|
||||
BuildMI(PrevStackMBB, DL, TII.get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex);
|
||||
CFIIndex = MF.addFrameInst(MCCFIInstruction::createOffset(
|
||||
@ -2553,8 +2552,7 @@ void ARMFrameLowering::adjustForSegmentedStacks(
|
||||
|
||||
// Emit the DWARF info about the change in stack as well as where to find the
|
||||
// previous link register
|
||||
CFIIndex =
|
||||
MF.addFrameInst(MCCFIInstruction::createDefCfaOffset(nullptr, -12));
|
||||
CFIIndex = MF.addFrameInst(MCCFIInstruction::cfiDefCfaOffset(nullptr, 12));
|
||||
BuildMI(AllocMBB, DL, TII.get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex);
|
||||
CFIIndex = MF.addFrameInst(MCCFIInstruction::createOffset(
|
||||
@ -2616,7 +2614,7 @@ void ARMFrameLowering::adjustForSegmentedStacks(
|
||||
}
|
||||
|
||||
// Update the CFA offset now that we've popped
|
||||
CFIIndex = MF.addFrameInst(MCCFIInstruction::createDefCfaOffset(nullptr, 0));
|
||||
CFIIndex = MF.addFrameInst(MCCFIInstruction::cfiDefCfaOffset(nullptr, 0));
|
||||
BuildMI(AllocMBB, DL, TII.get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex);
|
||||
|
||||
@ -2640,7 +2638,7 @@ void ARMFrameLowering::adjustForSegmentedStacks(
|
||||
}
|
||||
|
||||
// Update the CFA offset now that we've popped
|
||||
CFIIndex = MF.addFrameInst(MCCFIInstruction::createDefCfaOffset(nullptr, 0));
|
||||
CFIIndex = MF.addFrameInst(MCCFIInstruction::cfiDefCfaOffset(nullptr, 0));
|
||||
BuildMI(PostStackMBB, DL, TII.get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex);
|
||||
|
||||
|
@ -182,9 +182,9 @@ void Thumb1FrameLowering::emitPrologue(MachineFunction &MF,
|
||||
if (ArgRegsSaveSize) {
|
||||
emitPrologueEpilogueSPUpdate(MBB, MBBI, TII, dl, *RegInfo, -ArgRegsSaveSize,
|
||||
ARM::NoRegister, MachineInstr::FrameSetup);
|
||||
CFAOffset -= ArgRegsSaveSize;
|
||||
unsigned CFIIndex = MF.addFrameInst(
|
||||
MCCFIInstruction::createDefCfaOffset(nullptr, CFAOffset));
|
||||
CFAOffset += ArgRegsSaveSize;
|
||||
unsigned CFIIndex =
|
||||
MF.addFrameInst(MCCFIInstruction::cfiDefCfaOffset(nullptr, CFAOffset));
|
||||
BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex)
|
||||
.setMIFlags(MachineInstr::FrameSetup);
|
||||
@ -195,9 +195,9 @@ void Thumb1FrameLowering::emitPrologue(MachineFunction &MF,
|
||||
emitPrologueEpilogueSPUpdate(MBB, MBBI, TII, dl, *RegInfo,
|
||||
-(NumBytes - ArgRegsSaveSize),
|
||||
ARM::NoRegister, MachineInstr::FrameSetup);
|
||||
CFAOffset -= NumBytes - ArgRegsSaveSize;
|
||||
CFAOffset += NumBytes - ArgRegsSaveSize;
|
||||
unsigned CFIIndex = MF.addFrameInst(
|
||||
MCCFIInstruction::createDefCfaOffset(nullptr, CFAOffset));
|
||||
MCCFIInstruction::cfiDefCfaOffset(nullptr, CFAOffset));
|
||||
BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex)
|
||||
.setMIFlags(MachineInstr::FrameSetup);
|
||||
@ -259,9 +259,9 @@ void Thumb1FrameLowering::emitPrologue(MachineFunction &MF,
|
||||
}
|
||||
|
||||
if (adjustedGPRCS1Size) {
|
||||
CFAOffset -= adjustedGPRCS1Size;
|
||||
unsigned CFIIndex = MF.addFrameInst(
|
||||
MCCFIInstruction::createDefCfaOffset(nullptr, CFAOffset));
|
||||
CFAOffset += adjustedGPRCS1Size;
|
||||
unsigned CFIIndex =
|
||||
MF.addFrameInst(MCCFIInstruction::cfiDefCfaOffset(nullptr, CFAOffset));
|
||||
BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex)
|
||||
.setMIFlags(MachineInstr::FrameSetup);
|
||||
@ -307,9 +307,9 @@ void Thumb1FrameLowering::emitPrologue(MachineFunction &MF,
|
||||
.setMIFlags(MachineInstr::FrameSetup)
|
||||
.add(predOps(ARMCC::AL));
|
||||
if(FramePtrOffsetInBlock) {
|
||||
CFAOffset += FramePtrOffsetInBlock;
|
||||
CFAOffset -= FramePtrOffsetInBlock;
|
||||
unsigned CFIIndex = MF.addFrameInst(MCCFIInstruction::cfiDefCfa(
|
||||
nullptr, MRI->getDwarfRegNum(FramePtr, true), -CFAOffset));
|
||||
nullptr, MRI->getDwarfRegNum(FramePtr, true), CFAOffset));
|
||||
BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex)
|
||||
.setMIFlags(MachineInstr::FrameSetup);
|
||||
@ -386,9 +386,9 @@ void Thumb1FrameLowering::emitPrologue(MachineFunction &MF,
|
||||
emitPrologueEpilogueSPUpdate(MBB, MBBI, TII, dl, *RegInfo, -NumBytes,
|
||||
ScratchRegister, MachineInstr::FrameSetup);
|
||||
if (!HasFP) {
|
||||
CFAOffset -= NumBytes;
|
||||
CFAOffset += NumBytes;
|
||||
unsigned CFIIndex = MF.addFrameInst(
|
||||
MCCFIInstruction::createDefCfaOffset(nullptr, CFAOffset));
|
||||
MCCFIInstruction::cfiDefCfaOffset(nullptr, CFAOffset));
|
||||
BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex)
|
||||
.setMIFlags(MachineInstr::FrameSetup);
|
||||
|
@ -62,8 +62,8 @@ void Mips16FrameLowering::emitPrologue(MachineFunction &MF,
|
||||
TII.makeFrame(Mips::SP, StackSize, MBB, MBBI);
|
||||
|
||||
// emit ".cfi_def_cfa_offset StackSize"
|
||||
unsigned CFIIndex = MF.addFrameInst(
|
||||
MCCFIInstruction::createDefCfaOffset(nullptr, -StackSize));
|
||||
unsigned CFIIndex =
|
||||
MF.addFrameInst(MCCFIInstruction::cfiDefCfaOffset(nullptr, StackSize));
|
||||
BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex);
|
||||
|
||||
|
@ -434,8 +434,8 @@ void MipsSEFrameLowering::emitPrologue(MachineFunction &MF,
|
||||
TII.adjustStackPtr(SP, -StackSize, MBB, MBBI);
|
||||
|
||||
// emit ".cfi_def_cfa_offset StackSize"
|
||||
unsigned CFIIndex = MF.addFrameInst(
|
||||
MCCFIInstruction::createDefCfaOffset(nullptr, -StackSize));
|
||||
unsigned CFIIndex =
|
||||
MF.addFrameInst(MCCFIInstruction::cfiDefCfaOffset(nullptr, StackSize));
|
||||
BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex);
|
||||
|
||||
|
@ -1194,7 +1194,7 @@ void PPCFrameLowering::emitPrologue(MachineFunction &MF,
|
||||
// Adjust the definition of CFA to account for the change in SP.
|
||||
assert(NegFrameSize);
|
||||
CFIIndex = MF.addFrameInst(
|
||||
MCCFIInstruction::createDefCfaOffset(nullptr, NegFrameSize));
|
||||
MCCFIInstruction::cfiDefCfaOffset(nullptr, -NegFrameSize));
|
||||
}
|
||||
BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex);
|
||||
|
@ -286,7 +286,7 @@ void RISCVFrameLowering::emitPrologue(MachineFunction &MF,
|
||||
|
||||
// Emit ".cfi_def_cfa_offset RealStackSize"
|
||||
unsigned CFIIndex = MF.addFrameInst(
|
||||
MCCFIInstruction::createDefCfaOffset(nullptr, -RealStackSize));
|
||||
MCCFIInstruction::cfiDefCfaOffset(nullptr, RealStackSize));
|
||||
BuildMI(MBB, MBBI, DL, TII->get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex);
|
||||
|
||||
@ -349,7 +349,7 @@ void RISCVFrameLowering::emitPrologue(MachineFunction &MF,
|
||||
if (!hasFP(MF)) {
|
||||
// Emit ".cfi_def_cfa_offset StackSize"
|
||||
unsigned CFIIndex = MF.addFrameInst(
|
||||
MCCFIInstruction::createDefCfaOffset(nullptr, -MFI.getStackSize()));
|
||||
MCCFIInstruction::cfiDefCfaOffset(nullptr, MFI.getStackSize()));
|
||||
BuildMI(MBB, MBBI, DL, TII->get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex);
|
||||
}
|
||||
|
@ -465,7 +465,7 @@ void SystemZFrameLowering::emitPrologue(MachineFunction &MF,
|
||||
|
||||
// Add CFI for the allocation.
|
||||
unsigned CFIIndex = MF.addFrameInst(
|
||||
MCCFIInstruction::createDefCfaOffset(nullptr, SPOffsetFromCFA + Delta));
|
||||
MCCFIInstruction::cfiDefCfaOffset(nullptr, -SPOffsetFromCFA - Delta));
|
||||
BuildMI(MBB, MBBI, DL, ZII->get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex);
|
||||
SPOffsetFromCFA += Delta;
|
||||
|
@ -1313,7 +1313,7 @@ void X86FrameLowering::emitPrologue(MachineFunction &MF,
|
||||
// Define the current CFA rule to use the provided offset.
|
||||
assert(StackSize);
|
||||
BuildCFI(MBB, MBBI, DL,
|
||||
MCCFIInstruction::createDefCfaOffset(nullptr, 2 * stackGrowth));
|
||||
MCCFIInstruction::cfiDefCfaOffset(nullptr, -2 * stackGrowth));
|
||||
|
||||
// Change the rule for the FramePtr to be an "offset" rule.
|
||||
unsigned DwarfFramePtr = TRI->getDwarfRegNum(MachineFramePtr, true);
|
||||
@ -1390,7 +1390,7 @@ void X86FrameLowering::emitPrologue(MachineFunction &MF,
|
||||
// Define the current CFA rule to use the provided offset.
|
||||
assert(StackSize);
|
||||
BuildCFI(MBB, MBBI, DL,
|
||||
MCCFIInstruction::createDefCfaOffset(nullptr, StackOffset));
|
||||
MCCFIInstruction::cfiDefCfaOffset(nullptr, -StackOffset));
|
||||
StackOffset += stackGrowth;
|
||||
}
|
||||
|
||||
@ -1677,8 +1677,9 @@ void X86FrameLowering::emitPrologue(MachineFunction &MF,
|
||||
if (!HasFP && NumBytes) {
|
||||
// Define the current CFA rule to use the provided offset.
|
||||
assert(StackSize);
|
||||
BuildCFI(MBB, MBBI, DL, MCCFIInstruction::createDefCfaOffset(
|
||||
nullptr, -StackSize + stackGrowth));
|
||||
BuildCFI(
|
||||
MBB, MBBI, DL,
|
||||
MCCFIInstruction::cfiDefCfaOffset(nullptr, StackSize - stackGrowth));
|
||||
}
|
||||
|
||||
// Emit DWARF info specifying the offsets of the callee-saved registers.
|
||||
@ -1918,8 +1919,8 @@ void X86FrameLowering::emitEpilogue(MachineFunction &MF,
|
||||
emitSPUpdate(MBB, MBBI, DL, NumBytes, /*InEpilogue=*/true);
|
||||
if (!hasFP(MF) && NeedsDwarfCFI) {
|
||||
// Define the current CFA rule to use the provided offset.
|
||||
BuildCFI(MBB, MBBI, DL, MCCFIInstruction::createDefCfaOffset(
|
||||
nullptr, -CSSize - SlotSize));
|
||||
BuildCFI(MBB, MBBI, DL,
|
||||
MCCFIInstruction::cfiDefCfaOffset(nullptr, CSSize + SlotSize));
|
||||
}
|
||||
--MBBI;
|
||||
}
|
||||
@ -1945,7 +1946,7 @@ void X86FrameLowering::emitEpilogue(MachineFunction &MF,
|
||||
if (Opc == X86::POP32r || Opc == X86::POP64r) {
|
||||
Offset += SlotSize;
|
||||
BuildCFI(MBB, MBBI, DL,
|
||||
MCCFIInstruction::createDefCfaOffset(nullptr, Offset));
|
||||
MCCFIInstruction::cfiDefCfaOffset(nullptr, -Offset));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ static void EmitDefCfaOffset(MachineBasicBlock &MBB,
|
||||
int Offset) {
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
unsigned CFIIndex =
|
||||
MF.addFrameInst(MCCFIInstruction::createDefCfaOffset(nullptr, -Offset));
|
||||
MF.addFrameInst(MCCFIInstruction::cfiDefCfaOffset(nullptr, Offset));
|
||||
BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION))
|
||||
.addCFIIndex(CFIIndex);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user