Lines Matching refs:MF
96 bool runOnMachineFunction(MachineFunction &MF) override;
123 void calculateCallFrameInfo(MachineFunction &MF);
124 void calculateSaveRestoreBlocks(MachineFunction &MF);
125 void spillCalleeSavedRegs(MachineFunction &MF);
127 void calculateFrameObjectOffsets(MachineFunction &MF);
128 void replaceFrameIndices(MachineFunction &MF);
129 void replaceFrameIndices(MachineBasicBlock *BB, MachineFunction &MF,
131 void insertPrologEpilogCode(MachineFunction &MF);
174 bool PEI::runOnMachineFunction(MachineFunction &MF) { in runOnMachineFunction() argument
176 const Function &F = MF.getFunction(); in runOnMachineFunction()
177 const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo(); in runOnMachineFunction()
178 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in runOnMachineFunction()
180 RS = TRI->requiresRegisterScavenging(MF) ? new RegScavenger() : nullptr; in runOnMachineFunction()
181 FrameIndexVirtualScavenging = TRI->requiresFrameIndexScavenging(MF); in runOnMachineFunction()
183 TRI->requiresFrameIndexReplacementScavenging(MF); in runOnMachineFunction()
189 calculateCallFrameInfo(MF); in runOnMachineFunction()
193 calculateSaveRestoreBlocks(MF); in runOnMachineFunction()
196 if (MF.getTarget().usesPhysRegsForPEI()) in runOnMachineFunction()
197 spillCalleeSavedRegs(MF); in runOnMachineFunction()
201 TFI->processFunctionBeforeFrameFinalized(MF, RS); in runOnMachineFunction()
204 calculateFrameObjectOffsets(MF); in runOnMachineFunction()
212 insertPrologEpilogCode(MF); in runOnMachineFunction()
217 replaceFrameIndices(MF); in runOnMachineFunction()
222 if (TRI->requiresRegisterScavenging(MF) && FrameIndexVirtualScavenging) in runOnMachineFunction()
223 scavengeFrameVirtualRegs(MF, *RS); in runOnMachineFunction()
226 MachineFrameInfo &MFI = MF.getFrameInfo(); in runOnMachineFunction()
234 MF.getFunction().getSubprogram(), in runOnMachineFunction()
235 &MF.front()) in runOnMachineFunction()
250 void PEI::calculateCallFrameInfo(MachineFunction &MF) { in calculateCallFrameInfo() argument
251 const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo(); in calculateCallFrameInfo()
252 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in calculateCallFrameInfo()
253 MachineFrameInfo &MFI = MF.getFrameInfo(); in calculateCallFrameInfo()
268 for (MachineFunction::iterator BB = MF.begin(), E = MF.end(); BB != E; ++BB) in calculateCallFrameInfo()
296 if (TFI->canSimplifyCallFramePseudos(MF)) in calculateCallFrameInfo()
297 TFI->eliminateCallFramePseudoInstr(MF, *I->getParent(), I); in calculateCallFrameInfo()
303 void PEI::calculateSaveRestoreBlocks(MachineFunction &MF) { in calculateSaveRestoreBlocks() argument
304 const MachineFrameInfo &MFI = MF.getFrameInfo(); in calculateSaveRestoreBlocks()
324 SaveBlocks.push_back(&MF.front()); in calculateSaveRestoreBlocks()
325 for (MachineBasicBlock &MBB : MF) { in calculateSaveRestoreBlocks()
413 static void updateLiveness(MachineFunction &MF) { in updateLiveness() argument
414 MachineFrameInfo &MFI = MF.getFrameInfo(); in updateLiveness()
424 MachineBasicBlock *Entry = &MF.front(); in updateLiveness()
458 MachineRegisterInfo &MRI = MF.getRegInfo(); in updateLiveness()
473 for (MachineBasicBlock &MBB : MF) { in updateLiveness()
488 MachineFunction &MF = *SaveBlock.getParent(); in insertCSRSaves() local
489 const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo(); in insertCSRSaves()
490 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in insertCSRSaves()
491 const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo(); in insertCSRSaves()
508 MachineFunction &MF = *RestoreBlock.getParent(); in insertCSRRestores() local
509 const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo(); in insertCSRRestores()
510 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in insertCSRRestores()
511 const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo(); in insertCSRRestores()
530 void PEI::spillCalleeSavedRegs(MachineFunction &MF) { in spillCalleeSavedRegs() argument
536 assert(MF.getProperties().hasProperty( in spillCalleeSavedRegs()
539 const Function &F = MF.getFunction(); in spillCalleeSavedRegs()
540 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in spillCalleeSavedRegs()
541 MachineFrameInfo &MFI = MF.getFrameInfo(); in spillCalleeSavedRegs()
547 TFI->determineCalleeSaves(MF, SavedRegs, RS); in spillCalleeSavedRegs()
550 assignCalleeSavedSpillSlots(MF, SavedRegs, MinCSFrameIndex, MaxCSFrameIndex); in spillCalleeSavedRegs()
565 updateLiveness(MF); in spillCalleeSavedRegs()
721 void PEI::calculateFrameObjectOffsets(MachineFunction &MF) { in calculateFrameObjectOffsets() argument
722 const TargetFrameLowering &TFI = *MF.getSubtarget().getFrameLowering(); in calculateFrameObjectOffsets()
728 MachineFrameInfo &MFI = MF.getFrameInfo(); in calculateFrameObjectOffsets()
741 unsigned Skew = TFI.getStackAlignmentSkew(MF); in calculateFrameObjectOffsets()
801 const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo(); in calculateFrameObjectOffsets()
802 bool EarlyScavengingSlots = (TFI.hasFP(MF) && in calculateFrameObjectOffsets()
804 RegInfo->useFPForScavengingIndex(MF) && in calculateFrameObjectOffsets()
805 !RegInfo->needsStackRealignment(MF)); in calculateFrameObjectOffsets()
842 if (const WinEHFuncInfo *FuncInfo = MF.getWinEHFuncInfo()) in calculateFrameObjectOffsets()
939 if (MF.getTarget().getOptLevel() != CodeGenOpt::None && in calculateFrameObjectOffsets()
940 MF.getTarget().Options.StackSymbolOrdering) in calculateFrameObjectOffsets()
941 TFI.orderFrameObjects(MF, ObjectsToAllocate); in calculateFrameObjectOffsets()
949 MF.getTarget().getOptLevel() != CodeGenOpt::None && in calculateFrameObjectOffsets()
950 MFI.getStackProtectorIndex() < 0 && TFI.enableStackSlotScavenging(MF)) in calculateFrameObjectOffsets()
974 if (MFI.adjustsStack() && TFI.hasReservedCallFrame(MF)) in calculateFrameObjectOffsets()
984 (RegInfo->needsStackRealignment(MF) && MFI.getObjectIndexEnd() != 0)) in calculateFrameObjectOffsets()
1004 void PEI::insertPrologEpilogCode(MachineFunction &MF) { in insertPrologEpilogCode() argument
1005 const TargetFrameLowering &TFI = *MF.getSubtarget().getFrameLowering(); in insertPrologEpilogCode()
1009 TFI.emitPrologue(MF, *SaveBlock); in insertPrologEpilogCode()
1013 TFI.emitEpilogue(MF, *RestoreBlock); in insertPrologEpilogCode()
1016 TFI.inlineStackProbe(MF, *SaveBlock); in insertPrologEpilogCode()
1022 if (MF.shouldSplitStack()) { in insertPrologEpilogCode()
1024 TFI.adjustForSegmentedStacks(MF, *SaveBlock); in insertPrologEpilogCode()
1027 MF.getMMI().setHasSplitStack(true); in insertPrologEpilogCode()
1029 MF.getMMI().setHasNosplitStack(true); in insertPrologEpilogCode()
1036 if (MF.getFunction().getCallingConv() == CallingConv::HiPE) in insertPrologEpilogCode()
1038 TFI.adjustForHiPEPrologue(MF, *SaveBlock); in insertPrologEpilogCode()
1043 void PEI::replaceFrameIndices(MachineFunction &MF) { in replaceFrameIndices() argument
1044 const TargetFrameLowering &TFI = *MF.getSubtarget().getFrameLowering(); in replaceFrameIndices()
1045 if (!TFI.needsFrameIndexResolution(MF)) return; in replaceFrameIndices()
1049 SPState.resize(MF.getNumBlockIDs()); in replaceFrameIndices()
1053 for (auto DFI = df_ext_begin(&MF, Reachable), DFE = df_ext_end(&MF, Reachable); in replaceFrameIndices()
1064 replaceFrameIndices(BB, MF, SPAdj); in replaceFrameIndices()
1069 for (auto &BB : MF) { in replaceFrameIndices()
1074 replaceFrameIndices(&BB, MF, SPAdj); in replaceFrameIndices()
1078 void PEI::replaceFrameIndices(MachineBasicBlock *BB, MachineFunction &MF, in replaceFrameIndices() argument
1080 assert(MF.getSubtarget().getRegisterInfo() && in replaceFrameIndices()
1082 const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo(); in replaceFrameIndices()
1083 const TargetRegisterInfo &TRI = *MF.getSubtarget().getRegisterInfo(); in replaceFrameIndices()
1084 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in replaceFrameIndices()
1095 I = TFI->eliminateCallFramePseudoInstr(MF, *BB, I); in replaceFrameIndices()
1114 TFI->getFrameIndexReference(MF, MI.getOperand(0).getIndex(), Reg); in replaceFrameIndices()
1135 MF, MI.getOperand(i).getIndex(), Reg, /*IgnoreSPUpdates*/ false); in replaceFrameIndices()