Move addPred and removePred out-of-line.
[oota-llvm.git] / include / llvm / CodeGen / ScheduleDAG.h
index dbab3514617984ef887bfdc05c0dc7207936a725..2f6fd009284b10e886602f0c3cc25623d40e7bdb 100644 (file)
@@ -300,63 +300,12 @@ 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.
-    void 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;
-      // 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;
-    }
+    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.
-    void 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;
-        }
-    }
+    void removePred(const SDep &D);
 
     bool isPred(SUnit *N) {
       for (unsigned i = 0, e = (unsigned)Preds.size(); i != e; ++i)