From fd273b6ed51494a99b585a92e60cdc68102fe371 Mon Sep 17 00:00:00 2001 From: David Greene Date: Fri, 17 Aug 2007 15:13:55 +0000 Subject: [PATCH] Fix GLIBCXX_DEBUG error of comparing two singular iterators git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41139 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/SelectionDAG/ScheduleDAGSimple.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/CodeGen/SelectionDAG/ScheduleDAGSimple.cpp b/lib/CodeGen/SelectionDAG/ScheduleDAGSimple.cpp index 62854f76f95..f12e285416c 100644 --- a/lib/CodeGen/SelectionDAG/ScheduleDAGSimple.cpp +++ b/lib/CodeGen/SelectionDAG/ScheduleDAGSimple.cpp @@ -164,12 +164,14 @@ private: NodeInfo *NI; // Node info NIIterator NGI; // Node group iterator NIIterator NGE; // Node group iterator end + bool iter_valid; public: // Ctor. - NodeGroupIterator(NodeInfo *N) : NI(N) { + NodeGroupIterator(NodeInfo *N) : NI(N), iter_valid(false) { // If the node is in a group then set up the group iterator. Otherwise // the group iterators will trip first time out. + assert(N && "Bad node info"); if (N->isInGroup()) { // get Group NodeGroup *Group = NI->Group; @@ -177,14 +179,17 @@ public: NGE = Group->group_end(); // Prevent this node from being used (will be in members list NI = NULL; + iter_valid = true; } } /// next - Return the next node info, otherwise NULL. /// NodeInfo *next() { - // If members list - if (NGI != NGE) return *NGI++; + if (iter_valid) { + // If members list + if (NGI != NGE) return *NGI++; + } // Use node as the result (may be NULL) NodeInfo *Result = NI; // Only use once -- 2.34.1