diff options
author | Evan Cheng <evan.cheng@apple.com> | 2006-01-25 09:13:41 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2006-01-25 09:13:41 +0000 |
commit | e0a58323747bfca126f698d4e89e719b36007bf7 (patch) | |
tree | d22c6fd07013e1ce26dfea547b68c2d1227ca889 /lib/CodeGen/SelectionDAG/ScheduleDAG.cpp | |
parent | 3f23952404cd03a8ab934cedcef7916f52a796c0 (diff) |
Keep track of bottom / top element of a set of flagged nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25600 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/ScheduleDAG.cpp')
-rw-r--r-- | lib/CodeGen/SelectionDAG/ScheduleDAG.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp b/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp index 0a4a1ac3f7..4d7ed0abe7 100644 --- a/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp +++ b/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp @@ -86,7 +86,7 @@ void ScheduleDAG::IdentifyGroups() { if (Op.getValueType() != MVT::Flag) break; // Add to node group NodeGroup::Add(getNI(Op.Val), NI); - // Let evryone else know + // Let everyone else know HasGroups = true; } } @@ -464,6 +464,7 @@ void NodeGroup::Add(NodeInfo *D, NodeInfo *U) { // Merge the two lists DGroup->group_insert(DGroup->group_end(), UGroup->group_begin(), UGroup->group_end()); + DGroup->Bottom = UGroup->Bottom; } else if (DGroup) { // Make user member of definers group U->Group = DGroup; @@ -476,6 +477,7 @@ void NodeGroup::Add(NodeInfo *D, NodeInfo *U) { DGroup->addPending(-CountInternalUses(DNI, U)); } DGroup->group_push_back(U); + DGroup->Bottom = U; } else if (UGroup) { // Make definer member of users group D->Group = UGroup; @@ -488,11 +490,14 @@ void NodeGroup::Add(NodeInfo *D, NodeInfo *U) { UGroup->addPending(-CountInternalUses(D, UNI)); } UGroup->group_insert(UGroup->group_begin(), D); + UGroup->Top = D; } else { D->Group = U->Group = DGroup = new NodeGroup(); DGroup->addPending(D->Node->use_size() + U->Node->use_size() - CountInternalUses(D, U)); DGroup->group_push_back(D); DGroup->group_push_back(U); + DGroup->Top = D; + DGroup->Bottom = U; } } |