diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2016-02-22 03:12:42 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2016-02-22 03:12:42 +0000 |
commit | 0cc90a9147ccaef59cdb9caf4d68de990e5fdd05 (patch) | |
tree | 1bb8009b7156e1e0207a8ec607646e84c6375e06 /llvm/lib/CodeGen/MachineTraceMetrics.cpp | |
parent | 83d3476fd2603fbb81d8c8abe1d779911a6ad7b9 (diff) | |
download | bcm5719-llvm-0cc90a9147ccaef59cdb9caf4d68de990e5fdd05.tar.gz bcm5719-llvm-0cc90a9147ccaef59cdb9caf4d68de990e5fdd05.zip |
Revert "CodeGen: Use references in MachineTraceMetrics::Trace, NFC"
This reverts commit r261509. I'm not sure how this compiled locally,
but something was out of whack.
llvm-svn: 261510
Diffstat (limited to 'llvm/lib/CodeGen/MachineTraceMetrics.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineTraceMetrics.cpp | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/llvm/lib/CodeGen/MachineTraceMetrics.cpp b/llvm/lib/CodeGen/MachineTraceMetrics.cpp index e591c266432..38144593df4 100644 --- a/llvm/lib/CodeGen/MachineTraceMetrics.cpp +++ b/llvm/lib/CodeGen/MachineTraceMetrics.cpp @@ -655,17 +655,17 @@ static bool getDataDeps(const MachineInstr *UseMI, // Get the input data dependencies of a PHI instruction, using Pred as the // preferred predecessor. // This will add at most one dependency to Deps. -static void getPHIDeps(const MachineInstr &UseMI, +static void getPHIDeps(const MachineInstr *UseMI, SmallVectorImpl<DataDep> &Deps, const MachineBasicBlock *Pred, const MachineRegisterInfo *MRI) { // No predecessor at the beginning of a trace. Ignore dependencies. if (!Pred) return; - assert(UseMI.isPHI() && UseMI.getNumOperands() % 2 && "Bad PHI"); - for (unsigned i = 1; i != UseMI.getNumOperands(); i += 2) { - if (UseMI.getOperand(i + 1).getMBB() == Pred) { - unsigned Reg = UseMI.getOperand(i).getReg(); + assert(UseMI->isPHI() && UseMI->getNumOperands() % 2 && "Bad PHI"); + for (unsigned i = 1; i != UseMI->getNumOperands(); i += 2) { + if (UseMI->getOperand(i + 1).getMBB() == Pred) { + unsigned Reg = UseMI->getOperand(i).getReg(); Deps.push_back(DataDep(MRI, Reg, i)); return; } @@ -827,7 +827,7 @@ computeInstrDepths(const MachineBasicBlock *MBB) { // Collect all data dependencies. Deps.clear(); if (UseMI.isPHI()) - getPHIDeps(UseMI, Deps, TBI.Pred, MTM.MRI); + getPHIDeps(&UseMI, Deps, TBI.Pred, MTM.MRI); else if (getDataDeps(&UseMI, Deps, MTM.MRI)) updatePhysDepsDownwards(&UseMI, Deps, RegUnits, MTM.TRI); @@ -1052,7 +1052,7 @@ computeInstrHeights(const MachineBasicBlock *MBB) { if (!PHI.isPHI()) break; Deps.clear(); - getPHIDeps(PHI, Deps, MBB, MTM.MRI); + getPHIDeps(&PHI, Deps, MBB, MTM.MRI); if (!Deps.empty()) { // Loop header PHI heights are all 0. unsigned Height = TBI.Succ ? Cycles.lookup(&PHI).Height : 0; @@ -1147,25 +1147,26 @@ MachineTraceMetrics::Ensemble::getTrace(const MachineBasicBlock *MBB) { } unsigned -MachineTraceMetrics::Trace::getInstrSlack(const MachineInstr &MI) const { - assert(getBlockNum() == unsigned(MI.getParent()->getNumber()) && +MachineTraceMetrics::Trace::getInstrSlack(const MachineInstr *MI) const { + assert(MI && "Not an instruction."); + assert(getBlockNum() == unsigned(MI->getParent()->getNumber()) && "MI must be in the trace center block"); InstrCycles Cyc = getInstrCycles(MI); return getCriticalPath() - (Cyc.Depth + Cyc.Height); } unsigned -MachineTraceMetrics::Trace::getPHIDepth(const MachineInstr &PHI) const { +MachineTraceMetrics::Trace::getPHIDepth(const MachineInstr *PHI) const { const MachineBasicBlock *MBB = TE.MTM.MF->getBlockNumbered(getBlockNum()); SmallVector<DataDep, 1> Deps; getPHIDeps(PHI, Deps, MBB, TE.MTM.MRI); assert(Deps.size() == 1 && "PHI doesn't have MBB as a predecessor"); DataDep &Dep = Deps.front(); - unsigned DepCycle = getInstrCycles(*Dep.DefMI).Depth; + unsigned DepCycle = getInstrCycles(Dep.DefMI).Depth; // Add latency if DefMI is a real instruction. Transients get latency 0. if (!Dep.DefMI->isTransient()) - DepCycle += TE.MTM.SchedModel.computeOperandLatency(Dep.DefMI, Dep.DefOp, - &PHI, Dep.UseOp); + DepCycle += TE.MTM.SchedModel + .computeOperandLatency(Dep.DefMI, Dep.DefOp, PHI, Dep.UseOp); return DepCycle; } @@ -1251,13 +1252,13 @@ unsigned MachineTraceMetrics::Trace::getResourceLength( return std::max(Instrs, PRMax); } -bool MachineTraceMetrics::Trace::isDepInTrace(const MachineInstr &DefMI, - const MachineInstr &UseMI) const { - if (DefMI.getParent() == UseMI.getParent()) +bool MachineTraceMetrics::Trace::isDepInTrace(const MachineInstr *DefMI, + const MachineInstr *UseMI) const { + if (DefMI->getParent() == UseMI->getParent()) return true; - const TraceBlockInfo &DepTBI = TE.BlockInfo[DefMI.getParent()->getNumber()]; - const TraceBlockInfo &TBI = TE.BlockInfo[UseMI.getParent()->getNumber()]; + const TraceBlockInfo &DepTBI = TE.BlockInfo[DefMI->getParent()->getNumber()]; + const TraceBlockInfo &TBI = TE.BlockInfo[UseMI->getParent()->getNumber()]; return DepTBI.isUsefulDominator(TBI); } |