#include "llvm/CodeGen/IGNode.h" #include #include using std::cerr; //----------------------------------------------------------------------------- // Constructor //----------------------------------------------------------------------------- IGNode::IGNode(LiveRange *const PLR, unsigned int Ind) : Index(Ind), ParentLR(PLR) { OnStack = false; CurDegree = -1 ; ParentLR->setUserIGNode( this ); } //----------------------------------------------------------------------------- // Sets this IGNode on stack and reduce the degree of neighbors //----------------------------------------------------------------------------- void IGNode::pushOnStack() { OnStack = true; int neighs = AdjList.size(); if( neighs < 0) { cerr << "\nAdj List size = " << neighs; assert(0 && "Invalid adj list size"); } for(int i=0; i < neighs; i++) AdjList[i]->decCurDegree(); } //----------------------------------------------------------------------------- // Deletes an adjacency node. IGNodes are deleted when coalescing merges // two IGNodes together. //----------------------------------------------------------------------------- void IGNode::delAdjIGNode(const IGNode *const Node) { std::vector::iterator It = find(AdjList.begin(), AdjList.end(), Node); assert( It != AdjList.end() ); // the node must be there AdjList.erase(It); }