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

David Blaikie dblaikie at gmail.com
Tue Oct 14 08:12:36 PDT 2014


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?


> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141014/9cdca52b/attachment.html>


More information about the llvm-commits mailing list