From: Francis Visoiu Mistrih Date: Wed, 19 Jul 2017 23:47:32 +0000 (+0000) Subject: [PEI] Simplify handling of targets with no phys regs. NFC X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ce30ab6e5598f3c24f59ad016dc9526bc9a1d450;p=llvm [PEI] Simplify handling of targets with no phys regs. NFC Make doSpillCalleeSavedRegs a member function, instead of passing most of the members of PEI as arguments. Differential Revision: https://reviews.llvm.org/D35642 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308555 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/PrologEpilogInserter.cpp b/lib/CodeGen/PrologEpilogInserter.cpp index e1d4e1dc871..b437b5c0b00 100644 --- a/lib/CodeGen/PrologEpilogInserter.cpp +++ b/lib/CodeGen/PrologEpilogInserter.cpp @@ -48,12 +48,6 @@ using namespace llvm; #define DEBUG_TYPE "prologepilog" typedef SmallVector MBBVector; -static void doSpillCalleeSavedRegs(MachineFunction &MF, RegScavenger *RS, - unsigned &MinCSFrameIndex, - unsigned &MaxCXFrameIndex, - const MBBVector &SaveBlocks, - const MBBVector &RestoreBlocks); - namespace { class PEI : public MachineFunctionPass { public: @@ -77,11 +71,7 @@ public: bool runOnMachineFunction(MachineFunction &Fn) override; private: - std::function - SpillCalleeSavedRegisters; + std::function SpillCalleeSavedRegisters; std::function ScavengeFrameVirtualRegs; @@ -110,7 +100,7 @@ private: void calculateCallFrameInfo(MachineFunction &Fn); void calculateSaveRestoreBlocks(MachineFunction &Fn); - + void doSpillCalleeSavedRegs(MachineFunction &MF); void calculateFrameObjectOffsets(MachineFunction &Fn); void replaceFrameIndices(MachineFunction &Fn); void replaceFrameIndices(MachineBasicBlock *BB, MachineFunction &Fn, @@ -162,12 +152,12 @@ bool PEI::runOnMachineFunction(MachineFunction &Fn) { if (!SpillCalleeSavedRegisters) { const TargetMachine &TM = Fn.getTarget(); if (!TM.usesPhysRegsForPEI()) { - SpillCalleeSavedRegisters = [](MachineFunction &, RegScavenger *, - unsigned &, unsigned &, const MBBVector &, - const MBBVector &) {}; + SpillCalleeSavedRegisters = [](MachineFunction &) {}; ScavengeFrameVirtualRegs = [](MachineFunction &, RegScavenger &) {}; } else { - SpillCalleeSavedRegisters = doSpillCalleeSavedRegs; + SpillCalleeSavedRegisters = [this](MachineFunction &Fn) { + this->doSpillCalleeSavedRegs(Fn); + }; ScavengeFrameVirtualRegs = scavengeFrameVirtualRegs; UsesCalleeSaves = true; } @@ -192,8 +182,7 @@ bool PEI::runOnMachineFunction(MachineFunction &Fn) { calculateSaveRestoreBlocks(Fn); // Handle CSR spilling and restoring, for targets that need it. - SpillCalleeSavedRegisters(Fn, RS, MinCSFrameIndex, MaxCSFrameIndex, - SaveBlocks, RestoreBlocks); + SpillCalleeSavedRegisters(Fn); // Allow the target machine to make final modifications to the function // before the frame layout is finalized. @@ -504,11 +493,7 @@ static void insertCSRRestores(MachineBasicBlock &RestoreBlock, } } -static void doSpillCalleeSavedRegs(MachineFunction &Fn, RegScavenger *RS, - unsigned &MinCSFrameIndex, - unsigned &MaxCSFrameIndex, - const MBBVector &SaveBlocks, - const MBBVector &RestoreBlocks) { +void PEI::doSpillCalleeSavedRegs(MachineFunction &Fn) { const Function *F = Fn.getFunction(); const TargetFrameLowering *TFI = Fn.getSubtarget().getFrameLowering(); MachineFrameInfo &MFI = Fn.getFrameInfo();