• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/llvmCore-3425.0.33/lib/CodeGen/

Lines Matching defs:Fn

67 bool PEI::runOnMachineFunction(MachineFunction &Fn) {
68 const Function* F = Fn.getFunction();
69 const TargetRegisterInfo *TRI = Fn.getTarget().getRegisterInfo();
70 const TargetFrameLowering *TFI = Fn.getTarget().getFrameLowering();
72 assert(!Fn.getRegInfo().getNumVirtRegs() && "Regalloc must assign all vregs");
74 RS = TRI->requiresRegisterScavenging(Fn) ? new RegScavenger() : NULL;
75 FrameIndexVirtualScavenging = TRI->requiresFrameIndexScavenging(Fn);
80 calculateCallsInformation(Fn);
84 TFI->processFunctionBeforeCalleeSavedScan(Fn, RS);
88 calculateCalleeSavedRegisters(Fn);
96 placeCSRSpillsAndRestores(Fn);
100 insertCSRSpillsAndRestores(Fn);
104 TFI->processFunctionBeforeFrameFinalized(Fn);
107 calculateFrameObjectOffsets(Fn);
115 insertPrologEpilogCode(Fn);
120 replaceFrameIndices(Fn);
125 if (TRI->requiresRegisterScavenging(Fn) && FrameIndexVirtualScavenging)
126 scavengeFrameVirtualRegs(Fn);
129 Fn.getRegInfo().clearVirtRegs();
152 void PEI::calculateCallsInformation(MachineFunction &Fn) {
153 const TargetRegisterInfo *RegInfo = Fn.getTarget().getRegisterInfo();
154 const TargetInstrInfo &TII = *Fn.getTarget().getInstrInfo();
155 const TargetFrameLowering *TFI = Fn.getTarget().getFrameLowering();
156 MachineFrameInfo *MFI = Fn.getFrameInfo();
171 for (MachineFunction::iterator BB = Fn.begin(), E = Fn.end(); BB != E; ++BB)
199 if (TFI->canSimplifyCallFramePseudos(Fn))
200 RegInfo->eliminateCallFramePseudoInstr(Fn, *I->getParent(), I);
207 void PEI::calculateCalleeSavedRegisters(MachineFunction &Fn) {
208 const TargetRegisterInfo *RegInfo = Fn.getTarget().getRegisterInfo();
209 const TargetFrameLowering *TFI = Fn.getTarget().getFrameLowering();
210 MachineFrameInfo *MFI = Fn.getFrameInfo();
213 const uint16_t *CSRegs = RegInfo->getCalleeSavedRegs(&Fn);
224 if (Fn.getFunction()->getFnAttributes().hasNakedAttr())
230 if (Fn.getRegInfo().isPhysRegOrOverlapUsed(Reg)) {
251 if (RegInfo->hasReservedSpillSlot(Fn, Reg, FrameIdx)) {
289 void PEI::insertCSRSpillsAndRestores(MachineFunction &Fn) {
291 MachineFrameInfo *MFI = Fn.getFrameInfo();
300 const TargetInstrInfo &TII = *Fn.getTarget().getInstrInfo();
301 const TargetFrameLowering *TFI = Fn.getTarget().getFrameLowering();
302 const TargetRegisterInfo *TRI = Fn.getTarget().getRegisterInfo();
491 void PEI::calculateFrameObjectOffsets(MachineFunction &Fn) {
492 const TargetFrameLowering &TFI = *Fn.getTarget().getFrameLowering();
498 MachineFrameInfo *MFI = Fn.getFrameInfo();
560 const TargetRegisterInfo *RegInfo = Fn.getTarget().getRegisterInfo();
561 if (RS && TFI.hasFP(Fn) && RegInfo->useFPForScavengingIndex(Fn) &&
562 !RegInfo->needsStackRealignment(Fn)) {
644 if (RS && (!TFI.hasFP(Fn) || RegInfo->needsStackRealignment(Fn) ||
645 !RegInfo->useFPForScavengingIndex(Fn))) {
655 if (MFI->adjustsStack() && TFI.hasReservedCallFrame(Fn))
665 (RegInfo->needsStackRealignment(Fn) && MFI->getObjectIndexEnd() != 0))
687 void PEI::insertPrologEpilogCode(MachineFunction &Fn) {
688 const TargetFrameLowering &TFI = *Fn.getTarget().getFrameLowering();
691 TFI.emitPrologue(Fn);
694 for (MachineFunction::iterator I = Fn.begin(), E = Fn.end(); I != E; ++I) {
697 TFI.emitEpilogue(Fn, *I);
704 if (Fn.getTarget().Options.EnableSegmentedStacks)
705 TFI.adjustForSegmentedStacks(Fn);
711 void PEI::replaceFrameIndices(MachineFunction &Fn) {
712 if (!Fn.getFrameInfo()->hasStackObjects()) return; // Nothing to do?
714 const TargetMachine &TM = Fn.getTarget();
716 const TargetInstrInfo &TII = *Fn.getTarget().getInstrInfo();
724 for (MachineFunction::iterator BB = Fn.begin(),
725 E = Fn.end(); BB != E; ++BB) {
752 TRI.eliminateCallFramePseudoInstr(Fn, *BB, I);
815 void PEI::scavengeFrameVirtualRegs(MachineFunction &Fn) {
817 for (MachineFunction::iterator BB = Fn.begin(),
818 E = Fn.end(); BB != E; ++BB) {
848 const TargetRegisterClass *RC = Fn.getRegInfo().getRegClass(Reg);