aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/RegAlloc/IGNode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/CodeGen/RegAlloc/IGNode.cpp')
-rw-r--r--lib/CodeGen/RegAlloc/IGNode.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/CodeGen/RegAlloc/IGNode.cpp b/lib/CodeGen/RegAlloc/IGNode.cpp
new file mode 100644
index 0000000000..0e8a124cd3
--- /dev/null
+++ b/lib/CodeGen/RegAlloc/IGNode.cpp
@@ -0,0 +1,31 @@
+#include "llvm/CodeGen/IGNode.h"
+
+
+IGNode::IGNode(LiveRange *const PLR, unsigned int Ind): Index(Ind),
+ ParentLR(PLR)
+{
+ OnStack = false;
+ CurDegree = -1 ;
+ ParentLR->setUserIGNode( this );
+}
+
+
+
+void IGNode::pushOnStack() // sets on to stack and
+{ // reduce the degree of neighbors
+ OnStack = true;
+ unsigned int neighs = AdjList.size();
+
+ for(unsigned int i=0; i < neighs; i++) (AdjList[i])->decCurDegree();
+}
+
+
+void IGNode::delAdjIGNode(const IGNode *const Node) {
+ vector <IGNode *>::iterator It = AdjList.begin();
+
+ // find Node
+ for( ; It != AdjList.end() && (*It != Node); It++ ) ;
+ assert( It != AdjList.end() ); // the node must be there
+
+ AdjList.erase( It );
+}