diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp | 26 | 
1 files changed, 15 insertions, 11 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp index e05d9d71031..8a32fee1eb5 100644 --- a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp @@ -170,27 +170,31 @@ void ScheduleDAG::BuildSchedUnits() {    return;  } -static void CalculateDepths(SUnit *SU, unsigned Depth) { -  if (Depth > SU->Depth) SU->Depth = Depth; -  for (std::set<std::pair<SUnit*, bool> >::iterator I = SU->Succs.begin(), -         E = SU->Succs.end(); I != E; ++I) -    CalculateDepths(I->first, Depth+1); +static void CalculateDepths(SUnit *SU, unsigned Depth, unsigned Max) { +  if (Depth > SU->Depth) { +    SU->Depth = Depth; +    for (std::set<std::pair<SUnit*, bool> >::iterator I = SU->Succs.begin(), +           E = SU->Succs.end(); I != E; ++I) +      CalculateDepths(I->first, Depth+1, Max); +  }  }  void ScheduleDAG::CalculateDepths() {    SUnit *Entry = SUnitMap[DAG.getEntryNode().Val]; -  ::CalculateDepths(Entry, 0U); +  ::CalculateDepths(Entry, 0U, SUnits.size());    for (unsigned i = 0, e = SUnits.size(); i != e; ++i)      if (SUnits[i].Preds.size() == 0 && &SUnits[i] != Entry) { -      ::CalculateDepths(&SUnits[i], 0U); +      ::CalculateDepths(&SUnits[i], 0U, SUnits.size());      }  }  static void CalculateHeights(SUnit *SU, unsigned Height) { -  if (Height > SU->Height) SU->Height = Height; -  for (std::set<std::pair<SUnit*, bool> >::iterator I = SU->Preds.begin(), -         E = SU->Preds.end(); I != E; ++I) -    CalculateHeights(I->first, Height+1); +  if (Height > SU->Height) { +    SU->Height = Height; +    for (std::set<std::pair<SUnit*, bool> >::iterator I = SU->Preds.begin(), +           E = SU->Preds.end(); I != E; ++I) +      CalculateHeights(I->first, Height+1); +  }  }  void ScheduleDAG::CalculateHeights() {    SUnit *Root = SUnitMap[DAG.getRoot().Val];  | 

