[llvm] [AArch64] Use helper class for emitting CFI instructions into MIR (NFCI) (PR #136004)
Daniel Hoekwater via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 17 13:59:28 PDT 2025
================
@@ -602,33 +603,23 @@ void AArch64FrameLowering::emitCalleeSavedGPRLocations(
if (CSI.empty())
return;
- const TargetSubtargetInfo &STI = MF.getSubtarget();
- const TargetRegisterInfo &TRI = *STI.getRegisterInfo();
- const TargetInstrInfo &TII = *STI.getInstrInfo();
- DebugLoc DL = MBB.findDebugLoc(MBBI);
-
+ CFIInstBuilder CFIBuilder(MBB, MBBI, MachineInstr::FrameSetup);
for (const auto &Info : CSI) {
unsigned FrameIdx = Info.getFrameIdx();
if (MFI.getStackID(FrameIdx) == TargetStackID::ScalableVector)
continue;
assert(!Info.isSpilledToReg() && "Spilling to registers not implemented");
- int64_t DwarfReg = TRI.getDwarfRegNum(Info.getReg(), true);
int64_t Offset = MFI.getObjectOffset(FrameIdx) - getOffsetOfLocalArea();
// The location of VG will be emitted before each streaming-mode change in
// the function. Only locally-streaming functions require emitting the
// non-streaming VG location here.
if ((LocallyStreaming && FrameIdx == AFI->getStreamingVGIdx()) ||
- (!LocallyStreaming &&
- DwarfReg == TRI.getDwarfRegNum(AArch64::VG, true)))
+ (!LocallyStreaming && Info.getReg() == AArch64::VG))
continue;
- unsigned CFIIndex = MF.addFrameInst(
- MCCFIInstruction::createOffset(nullptr, DwarfReg, Offset));
- BuildMI(MBB, MBBI, DL, TII.get(TargetOpcode::CFI_INSTRUCTION))
- .addCFIIndex(CFIIndex)
- .setMIFlags(MachineInstr::FrameSetup);
+ CFIBuilder.buildOffset(Info.getReg(), Offset);
----------------
dhoekwater wrote:
(Here and elsewhere) if `CFIInstBuilder` isn't too expensive to construct, it may be more readable to declare `CFIBuilder` closer to its use so it's clear you're building a `MachineInstr::FrameSetup` instruction.
Alternatively, you could get rid of the local variable entirely and do `CFIInstBuilder(MBB, MBBI, MachineInstr::FrameSetup).buildOffset(Info.getReg(), Offset)` instead.
https://github.com/llvm/llvm-project/pull/136004
More information about the llvm-commits
mailing list