Move addPred and removePred out-of-line.
[oota-llvm.git] / include / llvm / CodeGen / ScheduleDAG.h
index 0f82ae91fdefd7c6331acece23a6d1a98e4133c1..2f6fd009284b10e886602f0c3cc25623d40e7bdb 100644 (file)
@@ -299,67 +299,13 @@ namespace llvm {
 
     /// addPred - This adds the specified edge as a pred of the current node if
     /// not already.  It also adds the current node as a successor of the
-    /// specified node.  This returns true if this is a new pred.
-    bool addPred(const SDep &D) {
-      // If this node already has this depenence, don't add a redundant one.
-      for (unsigned i = 0, e = (unsigned)Preds.size(); i != e; ++i)
-        if (Preds[i] == D)
-          return false;
-      // Add a pred to this SUnit.
-      Preds.push_back(D);
-      // Now add a corresponding succ to N.
-      SDep P = D;
-      P.setSUnit(this);
-      SUnit *N = D.getSUnit();
-      N->Succs.push_back(P);
-      // Update the bookkeeping.
-      if (D.getKind() == SDep::Data) {
-        ++NumPreds;
-        ++N->NumSuccs;
-      }
-      if (!N->isScheduled)
-        ++NumPredsLeft;
-      if (!isScheduled)
-        ++N->NumSuccsLeft;
-      return true;
-    }
+    /// specified node.
+    void addPred(const SDep &D);
 
     /// removePred - This removes the specified edge as a pred of the current
     /// node if it exists.  It also removes the current node as a successor of
-    /// the specified node.  This returns true if the edge existed and was
-    /// removed.
-    bool removePred(const SDep &D) {
-      // Find the matching predecessor.
-      for (SmallVector<SDep, 4>::iterator I = Preds.begin(), E = Preds.end();
-           I != E; ++I)
-        if (*I == D) {
-          bool FoundSucc = false;
-          // Find the corresponding successor in N.
-          SDep P = D;
-          P.setSUnit(this);
-          SUnit *N = D.getSUnit();
-          for (SmallVector<SDep, 4>::iterator II = N->Succs.begin(),
-                 EE = N->Succs.end(); II != EE; ++II)
-            if (*II == P) {
-              FoundSucc = true;
-              N->Succs.erase(II);
-              break;
-            }
-          assert(FoundSucc && "Mismatching preds / succs lists!");
-          Preds.erase(I);
-          // Update the bookkeeping;
-          if (D.getKind() == SDep::Data) {
-            --NumPreds;
-            --N->NumSuccs;
-          }
-          if (!N->isScheduled)
-            --NumPredsLeft;
-          if (!isScheduled)
-            --N->NumSuccsLeft;
-          return true;
-        }
-      return false;
-    }
+    /// the specified node.
+    void removePred(const SDep &D);
 
     bool isPred(SUnit *N) {
       for (unsigned i = 0, e = (unsigned)Preds.size(); i != e; ++i)