[llvm] r219669 - Instead of the TargetMachine cache the MachineFunction

Eric Christopher echristo at gmail.com
Wed Oct 15 14:16:50 PDT 2014


On Tue, Oct 14, 2014 at 1:05 PM, Eric Christopher <echristo at gmail.com> wrote:
> On Tue, Oct 14, 2014 at 8:12 AM, David Blaikie <dblaikie at gmail.com> wrote:
>>
>>
>> On Tue, Oct 14, 2014 at 12:17 AM, Eric Christopher <echristo at gmail.com>
>> wrote:
>>>
>>> Author: echristo
>>> Date: Tue Oct 14 02:17:20 2014
>>> New Revision: 219669
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=219669&view=rev
>>> Log:
>>> Instead of the TargetMachine cache the MachineFunction
>>
>>
>> Why not just cache the Subtarget itself?
>
> *shrug* No reason to make the calls. It really looks like no reason to
> cache the MachineFunction either so I'll probably just kill that part.
>

Done in r219847

-eric

> -eric
>
>>
>>>
>>> and TargetRegisterInfo in the peephole optimizer. This
>>> makes it easier to grab subtarget dependent variables off
>>> of the MachineFunction rather than the TargetMachine.
>>>
>>> Modified:
>>>     llvm/trunk/lib/CodeGen/PeepholeOptimizer.cpp
>>>
>>> Modified: llvm/trunk/lib/CodeGen/PeepholeOptimizer.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/PeepholeOptimizer.cpp?rev=219669&r1=219668&r2=219669&view=diff
>>>
>>> ==============================================================================
>>> --- llvm/trunk/lib/CodeGen/PeepholeOptimizer.cpp (original)
>>> +++ llvm/trunk/lib/CodeGen/PeepholeOptimizer.cpp Tue Oct 14 02:17:20 2014
>>> @@ -107,8 +107,9 @@ STATISTIC(NumRewrittenCopies, "Number of
>>>
>>>  namespace {
>>>    class PeepholeOptimizer : public MachineFunctionPass {
>>> -    const TargetMachine   *TM;
>>> +    MachineFunction *MF;
>>>      const TargetInstrInfo *TII;
>>> +    const TargetRegisterInfo *TRI;
>>>      MachineRegisterInfo   *MRI;
>>>      MachineDominatorTree  *DT;  // Machine dominator tree
>>>
>>> @@ -327,8 +328,7 @@ optimizeExtInstr(MachineInstr *MI, Machi
>>>    // Ensure DstReg can get a register class that actually supports
>>>    // sub-registers. Don't change the class until we commit.
>>>    const TargetRegisterClass *DstRC = MRI->getRegClass(DstReg);
>>> -  DstRC =
>>> TM->getSubtargetImpl()->getRegisterInfo()->getSubClassWithSubReg(
>>> -      DstRC, SubIdx);
>>> +  DstRC = TRI->getSubClassWithSubReg(DstRC, SubIdx);
>>>    if (!DstRC)
>>>      return false;
>>>
>>> @@ -338,8 +338,7 @@ optimizeExtInstr(MachineInstr *MI, Machi
>>>    // If UseSrcSubIdx is Set, SubIdx also applies to SrcReg, and only uses
>>> of
>>>    // SrcReg:SubIdx should be replaced.
>>>    bool UseSrcSubIdx =
>>> -      TM->getSubtargetImpl()->getRegisterInfo()->getSubClassWithSubReg(
>>> -          MRI->getRegClass(SrcReg), SubIdx) != nullptr;
>>> +      TRI->getSubClassWithSubReg(MRI->getRegClass(SrcReg), SubIdx) !=
>>> nullptr;
>>>
>>>    // The source has other uses. See if we can replace the other uses with
>>> use of
>>>    // the result of the extension.
>>> @@ -548,7 +547,6 @@ bool PeepholeOptimizer::findNextSource(u
>>>    unsigned Src;
>>>    unsigned SrcSubReg;
>>>    bool ShouldRewrite = false;
>>> -  const TargetRegisterInfo &TRI =
>>> *TM->getSubtargetImpl()->getRegisterInfo();
>>>
>>>    // Follow the chain of copies until we reach the top of the use-def
>>> chain
>>>    // or find a more suitable source.
>>> @@ -571,7 +569,7 @@ bool PeepholeOptimizer::findNextSource(u
>>>      const TargetRegisterClass *SrcRC = MRI->getRegClass(Src);
>>>
>>>      // If this source does not incur a cross register bank copy, use it.
>>> -    ShouldRewrite = shareSameRegisterFile(TRI, DefRC, DefSubReg, SrcRC,
>>> +    ShouldRewrite = shareSameRegisterFile(*TRI, DefRC, DefSubReg, SrcRC,
>>>                                            SrcSubReg);
>>>    } while (!ShouldRewrite);
>>>
>>> @@ -1047,24 +1045,25 @@ bool PeepholeOptimizer::foldImmediate(Ma
>>>    return false;
>>>  }
>>>
>>> -bool PeepholeOptimizer::runOnMachineFunction(MachineFunction &MF) {
>>> -  if (skipOptnoneFunction(*MF.getFunction()))
>>> +bool PeepholeOptimizer::runOnMachineFunction(MachineFunction &mf) {
>>> +  if (skipOptnoneFunction(*mf.getFunction()))
>>>      return false;
>>>
>>>    DEBUG(dbgs() << "********** PEEPHOLE OPTIMIZER **********\n");
>>> -  DEBUG(dbgs() << "********** Function: " << MF.getName() << '\n');
>>> +  DEBUG(dbgs() << "********** Function: " << mf.getName() << '\n');
>>>
>>>    if (DisablePeephole)
>>>      return false;
>>>
>>> -  TM  = &MF.getTarget();
>>> -  TII = TM->getSubtargetImpl()->getInstrInfo();
>>> -  MRI = &MF.getRegInfo();
>>> +  MF = &mf;
>>> +  TII = MF->getSubtarget().getInstrInfo();
>>> +  TRI = MF->getSubtarget().getRegisterInfo();
>>> +  MRI = &MF->getRegInfo();
>>>    DT  = Aggressive ? &getAnalysis<MachineDominatorTree>() : nullptr;
>>>
>>>    bool Changed = false;
>>>
>>> -  for (MachineFunction::iterator I = MF.begin(), E = MF.end(); I != E;
>>> ++I) {
>>> +  for (MachineFunction::iterator I = MF->begin(), E = MF->end(); I != E;
>>> ++I) {
>>>      MachineBasicBlock *MBB = &*I;
>>>
>>>      bool SeenMoveImm = false;
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>>



More information about the llvm-commits mailing list