diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2025-12-06 19:56:45 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2025-12-06 20:08:43 +0000 |
| commit | 3f709e42e3be0f28a88ca3e77663a02b52c914f4 (patch) | |
| tree | 948796bf3bf7e164373caf6c31f9f128ca85fd8c /llvm/lib/Target/Mips/Mips16FrameLowering.cpp | |
| parent | 32a711e1c447004eb1fd015925f305ed1d8426de (diff) | |
Diffstat (limited to 'llvm/lib/Target/Mips/Mips16FrameLowering.cpp')
| -rw-r--r-- | llvm/lib/Target/Mips/Mips16FrameLowering.cpp | 29 |
1 files changed, 7 insertions, 22 deletions
diff --git a/llvm/lib/Target/Mips/Mips16FrameLowering.cpp b/llvm/lib/Target/Mips/Mips16FrameLowering.cpp index f1dce3f2a6f2..44fc720e6ce1 100644 --- a/llvm/lib/Target/Mips/Mips16FrameLowering.cpp +++ b/llvm/lib/Target/Mips/Mips16FrameLowering.cpp @@ -16,6 +16,7 @@ #include "MipsRegisterInfo.h" #include "MipsSubtarget.h" #include "llvm/ADT/BitVector.h" +#include "llvm/CodeGen/CFIInstBuilder.h" #include "llvm/CodeGen/MachineBasicBlock.h" #include "llvm/CodeGen/MachineFrameInfo.h" #include "llvm/CodeGen/MachineFunction.h" @@ -24,9 +25,6 @@ #include "llvm/CodeGen/MachineModuleInfo.h" #include "llvm/CodeGen/TargetFrameLowering.h" #include "llvm/IR/DebugLoc.h" -#include "llvm/MC/MCContext.h" -#include "llvm/MC/MCDwarf.h" -#include "llvm/MC/MCRegisterInfo.h" #include "llvm/Support/MathExtras.h" #include <cstdint> #include <vector> @@ -52,32 +50,19 @@ void Mips16FrameLowering::emitPrologue(MachineFunction &MF, // No need to allocate space on the stack. if (StackSize == 0 && !MFI.adjustsStack()) return; - const MCRegisterInfo *MRI = MF.getContext().getRegisterInfo(); - // Adjust stack. TII.makeFrame(Mips::SP, StackSize, MBB, MBBI); - // emit ".cfi_def_cfa_offset StackSize" - unsigned CFIIndex = - MF.addFrameInst(MCCFIInstruction::cfiDefCfaOffset(nullptr, StackSize)); - BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION)) - .addCFIIndex(CFIIndex); + CFIInstBuilder CFIBuilder(MBB, MBBI, MachineInstr::NoFlags); + CFIBuilder.buildDefCFAOffset(StackSize); const std::vector<CalleeSavedInfo> &CSI = MFI.getCalleeSavedInfo(); if (!CSI.empty()) { - const std::vector<CalleeSavedInfo> &CSI = MFI.getCalleeSavedInfo(); - - for (const CalleeSavedInfo &I : CSI) { - int64_t Offset = MFI.getObjectOffset(I.getFrameIdx()); - Register Reg = I.getReg(); - unsigned DReg = MRI->getDwarfRegNum(Reg, true); - unsigned CFIIndex = MF.addFrameInst( - MCCFIInstruction::createOffset(nullptr, DReg, Offset)); - BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION)) - .addCFIIndex(CFIIndex); - } + for (const CalleeSavedInfo &I : CSI) + CFIBuilder.buildOffset(I.getReg(), MFI.getObjectOffset(I.getFrameIdx())); } + if (hasFP(MF)) BuildMI(MBB, MBBI, dl, TII.get(Mips::MoveR3216), Mips::S0) .addReg(Mips::SP).setMIFlag(MachineInstr::FrameSetup); @@ -120,7 +105,7 @@ bool Mips16FrameLowering::spillCalleeSavedRegisters( // method MipsTargetLowering::lowerRETURNADDR. // It's killed at the spill, unless the register is RA and return address // is taken. - Register Reg = I.getReg(); + MCRegister Reg = I.getReg(); bool IsRAAndRetAddrIsTaken = (Reg == Mips::RA) && MF->getFrameInfo().isReturnAddressTaken(); if (!IsRAAndRetAddrIsTaken) |
