blob: 795e8b71524e64e39b761e22c4fc579ff66704ee [file] [log] [blame]
Ruchira Sasanka8e604792001-09-14 21:18:34 +00001#include "llvm/CodeGen/IGNode.h"
Chris Lattner697954c2002-01-20 22:54:45 +00002#include <algorithm>
3#include <iostream>
4using std::cerr;
Ruchira Sasanka8e604792001-09-14 21:18:34 +00005
Ruchira Sasanka4f3eb222002-01-07 19:19:18 +00006//-----------------------------------------------------------------------------
Ruchira Sasanka4f3eb222002-01-07 19:19:18 +00007// Sets this IGNode on stack and reduce the degree of neighbors
8//-----------------------------------------------------------------------------
Chris Lattner748697d2002-02-05 04:20:12 +00009
10void IGNode::pushOnStack() {
Ruchira Sasanka8e604792001-09-14 21:18:34 +000011 OnStack = true;
Ruchira Sasankaa9e45c82001-11-03 22:01:09 +000012 int neighs = AdjList.size();
Ruchira Sasanka8e604792001-09-14 21:18:34 +000013
Chris Lattner748697d2002-02-05 04:20:12 +000014 if (neighs < 0) {
Chris Lattner697954c2002-01-20 22:54:45 +000015 cerr << "\nAdj List size = " << neighs;
Ruchira Sasankaa9e45c82001-11-03 22:01:09 +000016 assert(0 && "Invalid adj list size");
17 }
18
Chris Lattner697954c2002-01-20 22:54:45 +000019 for(int i=0; i < neighs; i++)
20 AdjList[i]->decCurDegree();
Ruchira Sasanka8e604792001-09-14 21:18:34 +000021}
22
Ruchira Sasanka4f3eb222002-01-07 19:19:18 +000023//-----------------------------------------------------------------------------
24// Deletes an adjacency node. IGNodes are deleted when coalescing merges
25// two IGNodes together.
26//-----------------------------------------------------------------------------
Chris Lattner748697d2002-02-05 04:20:12 +000027
28void IGNode::delAdjIGNode(const IGNode *Node) {
29 std::vector<IGNode *>::iterator It=find(AdjList.begin(), AdjList.end(), Node);
Ruchira Sasanka8e604792001-09-14 21:18:34 +000030 assert( It != AdjList.end() ); // the node must be there
Chris Lattner697954c2002-01-20 22:54:45 +000031 AdjList.erase(It);
Ruchira Sasanka8e604792001-09-14 21:18:34 +000032}