[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