Do not use a class before it is defined.
authorChris Lattner <sabre@nondot.org>
Wed, 5 Nov 2003 06:25:06 +0000 (06:25 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 5 Nov 2003 06:25:06 +0000 (06:25 +0000)
Be gcc 3.4 clean

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9727 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/InstrSched/InstrScheduling.cpp
lib/Target/SparcV9/InstrSched/InstrScheduling.cpp

index 2a2ef27a29f586c705028b2041ba3e88833fa0f9..a50439de7f66fe5d236c1d038ffe8d480b01c6e6 100644 (file)
@@ -111,10 +111,7 @@ public:
   
   inline bool operator!=(const _Self& x) const { return !operator==(x); }
   
-  inline _NodeType* operator*() const {
-    assert(cycleNum < S.groups.size());
-    return (*S.groups[cycleNum])[slotNum];
-  }
+  inline _NodeType* operator*() const;
   inline _NodeType* operator->() const { return operator*(); }
   
          _Self& operator++();                          // Preincrement
@@ -201,11 +198,17 @@ public: // accessor functions to query chosen schedule
   }
   
 private:
-  friend class iterator;
-  friend class const_iterator;
+  friend class ScheduleIterator<SchedGraphNode>;
+  friend class ScheduleIterator<const SchedGraphNode>;
   /*ctor*/     InstrSchedule   ();     // Disable: DO NOT IMPLEMENT.
 };
 
+template<class NodeType>
+inline NodeType *ScheduleIterator<NodeType>::operator*() const {
+  assert(cycleNum < S.groups.size());
+  return (*S.groups[cycleNum])[slotNum];
+}
+
 
 /*ctor*/
 InstrSchedule::InstrSchedule(unsigned int _nslots, unsigned int _numNodes)
index 2a2ef27a29f586c705028b2041ba3e88833fa0f9..a50439de7f66fe5d236c1d038ffe8d480b01c6e6 100644 (file)
@@ -111,10 +111,7 @@ public:
   
   inline bool operator!=(const _Self& x) const { return !operator==(x); }
   
-  inline _NodeType* operator*() const {
-    assert(cycleNum < S.groups.size());
-    return (*S.groups[cycleNum])[slotNum];
-  }
+  inline _NodeType* operator*() const;
   inline _NodeType* operator->() const { return operator*(); }
   
          _Self& operator++();                          // Preincrement
@@ -201,11 +198,17 @@ public: // accessor functions to query chosen schedule
   }
   
 private:
-  friend class iterator;
-  friend class const_iterator;
+  friend class ScheduleIterator<SchedGraphNode>;
+  friend class ScheduleIterator<const SchedGraphNode>;
   /*ctor*/     InstrSchedule   ();     // Disable: DO NOT IMPLEMENT.
 };
 
+template<class NodeType>
+inline NodeType *ScheduleIterator<NodeType>::operator*() const {
+  assert(cycleNum < S.groups.size());
+  return (*S.groups[cycleNum])[slotNum];
+}
+
 
 /*ctor*/
 InstrSchedule::InstrSchedule(unsigned int _nslots, unsigned int _numNodes)