diff options
| author | Andrew Trick <atrick@apple.com> | 2013-08-23 17:48:39 +0000 |
|---|---|---|
| committer | Andrew Trick <atrick@apple.com> | 2013-08-23 17:48:39 +0000 |
| commit | 8dd26f002f9a4089a38c981407ef84e4a8d713b4 (patch) | |
| tree | 4b2da2bf1b709a58ef9beea452cd69fa2f5c5d1c /llvm/lib | |
| parent | cfb42ce9237b464b48ab925fb44a2a9419383385 (diff) | |
| download | bcm5719-llvm-8dd26f002f9a4089a38c981407ef84e4a8d713b4.tar.gz bcm5719-llvm-8dd26f002f9a4089a38c981407ef84e4a8d713b4.zip | |
MI Sched: record local vreg uses.
This will be used to compute the cyclic critical path and to
update precomputed per-node pressure differences.
In the longer term, it could also be used to speed up LiveInterval
update by avoiding visiting all global vreg users.
llvm-svn: 189118
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/CodeGen/ScheduleDAGInstrs.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp b/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp index b0245d5c3c7..24714089da4 100644 --- a/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp +++ b/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp @@ -405,6 +405,9 @@ void ScheduleDAGInstrs::addVRegUseDeps(SUnit *SU, unsigned OperIdx) { MachineInstr *MI = SU->getInstr(); unsigned Reg = MI->getOperand(OperIdx).getReg(); + // Record this local VReg use. + VRegUses.insert(VReg2SUnit(Reg, SU)); + // Lookup this operand's reaching definition. assert(LIS && "vreg dependencies requires LiveIntervals"); LiveRangeQuery LRQ(LIS->getInterval(Reg), LIS->getInstructionIndex(MI)); @@ -715,10 +718,9 @@ void ScheduleDAGInstrs::buildSchedGraph(AliasAnalysis *AA, Uses.setUniverse(TRI->getNumRegs()); assert(VRegDefs.empty() && "Only BuildSchedGraph may access VRegDefs"); - // FIXME: Allow SparseSet to reserve space for the creation of virtual - // registers during scheduling. Don't artificially inflate the Universe - // because we want to assert that vregs are not created during DAG building. + VRegUses.clear(); VRegDefs.setUniverse(MRI.getNumVirtRegs()); + VRegUses.setUniverse(MRI.getNumVirtRegs()); // Model data dependencies between instructions being scheduled and the // ExitSU. |

