diff options
author | Francis Visoiu Mistrih <fvisoiumistrih@apple.com> | 2017-07-19 23:47:32 +0000 |
---|---|---|
committer | Francis Visoiu Mistrih <fvisoiumistrih@apple.com> | 2017-07-19 23:47:32 +0000 |
commit | a1f21bca465b074b2174c44eb3c2df6a6d64fb7a (patch) | |
tree | 018128b02ae5f7b010b5d39fd1d64644b2d296ff /llvm/lib/CodeGen/PrologEpilogInserter.cpp | |
parent | 3b7bbdbdd524d629773c156f23c34ca82cd30108 (diff) | |
download | bcm5719-llvm-a1f21bca465b074b2174c44eb3c2df6a6d64fb7a.tar.gz bcm5719-llvm-a1f21bca465b074b2174c44eb3c2df6a6d64fb7a.zip |
[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
llvm-svn: 308555
Diffstat (limited to 'llvm/lib/CodeGen/PrologEpilogInserter.cpp')
-rw-r--r-- | llvm/lib/CodeGen/PrologEpilogInserter.cpp | 31 |
1 files changed, 8 insertions, 23 deletions
diff --git a/llvm/lib/CodeGen/PrologEpilogInserter.cpp b/llvm/lib/CodeGen/PrologEpilogInserter.cpp index e1d4e1dc871..b437b5c0b00 100644 --- a/llvm/lib/CodeGen/PrologEpilogInserter.cpp +++ b/llvm/lib/CodeGen/PrologEpilogInserter.cpp @@ -48,12 +48,6 @@ using namespace llvm; #define DEBUG_TYPE "prologepilog" typedef SmallVector<MachineBasicBlock *, 4> 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<void(MachineFunction &MF, RegScavenger *RS, - unsigned &MinCSFrameIndex, unsigned &MaxCSFrameIndex, - const MBBVector &SaveBlocks, - const MBBVector &RestoreBlocks)> - SpillCalleeSavedRegisters; + std::function<void(MachineFunction &MF)> SpillCalleeSavedRegisters; std::function<void(MachineFunction &MF, RegScavenger &RS)> 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(); |