From fbc88a624aac4ad8eece93ff8fe085a924252828 Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Wed, 25 Jan 2006 09:13:41 +0000 Subject: [PATCH] Keep track of bottom / top element of a set of flagged nodes. llvm-svn: 25600 --- llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp index 0a4a1ac3f757..4d7ed0abe725 100644 --- a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp +++ b/llvm/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; } }