mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-04 10:04:33 +00:00
When unfolding a load during scheduling, the new operator node has
a data dependency on the load node, so it really needs a data-dependence edge to the load node, even if the load previously existed. And add a few comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67554 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3e744c8bc4
commit
fa9afef7ea
@ -410,6 +410,7 @@ SUnit *ScheduleDAGRRList::CopyAndMoveSuccessors(SUnit *SU) {
|
||||
NewSU->isCommutable = true;
|
||||
ComputeLatency(NewSU);
|
||||
|
||||
// Record all the edges to and from the old SU, by category.
|
||||
SmallVector<SDep, 4> ChainPreds;
|
||||
SmallVector<SDep, 4> ChainSuccs;
|
||||
SmallVector<SDep, 4> LoadPreds;
|
||||
@ -433,6 +434,7 @@ SUnit *ScheduleDAGRRList::CopyAndMoveSuccessors(SUnit *SU) {
|
||||
NodeSuccs.push_back(*I);
|
||||
}
|
||||
|
||||
// Now assign edges to the newly-created nodes.
|
||||
for (unsigned i = 0, e = ChainPreds.size(); i != e; ++i) {
|
||||
const SDep &Pred = ChainPreds[i];
|
||||
RemovePred(SU, Pred);
|
||||
@ -468,9 +470,10 @@ SUnit *ScheduleDAGRRList::CopyAndMoveSuccessors(SUnit *SU) {
|
||||
AddPred(SuccDep, D);
|
||||
}
|
||||
}
|
||||
if (isNewLoad) {
|
||||
AddPred(NewSU, SDep(LoadSU, SDep::Order, LoadSU->Latency));
|
||||
}
|
||||
|
||||
// Add a data dependency to reflect that NewSU reads the value defined
|
||||
// by LoadSU.
|
||||
AddPred(NewSU, SDep(LoadSU, SDep::Data, LoadSU->Latency));
|
||||
|
||||
if (isNewLoad)
|
||||
AvailableQueue->addNode(LoadSU);
|
||||
|
Loading…
Reference in New Issue
Block a user