mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
* Use C++ style comments instead of C-style
* Make file description more readable * Make code layout more consistent, include comment in assert so it's visible during execution if it hits llvm-svn: 9430
This commit is contained in:
parent
6ace5e86b1
commit
765938c377
@ -7,7 +7,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// class IGNode for coloring-based register allocation for LLVM.
|
||||
// This file implements an Interference graph node for coloring-based register
|
||||
// allocation.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
@ -28,7 +29,7 @@ void IGNode::pushOnStack() {
|
||||
assert(0 && "Invalid adj list size");
|
||||
}
|
||||
|
||||
for(int i=0; i < neighs; i++)
|
||||
for (int i=0; i < neighs; i++)
|
||||
AdjList[i]->decCurDegree();
|
||||
}
|
||||
|
||||
@ -39,7 +40,7 @@ void IGNode::pushOnStack() {
|
||||
|
||||
void IGNode::delAdjIGNode(const IGNode *Node) {
|
||||
std::vector<IGNode *>::iterator It=find(AdjList.begin(), AdjList.end(), Node);
|
||||
assert( It != AdjList.end() ); // the node must be there
|
||||
assert(It != AdjList.end() && "The node must be there!");
|
||||
AdjList.erase(It);
|
||||
}
|
||||
|
||||
@ -48,13 +49,10 @@ void IGNode::delAdjIGNode(const IGNode *Node) {
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
unsigned
|
||||
IGNode::getCombinedDegree(const IGNode* otherNode) const
|
||||
{
|
||||
IGNode::getCombinedDegree(const IGNode* otherNode) const {
|
||||
std::vector<IGNode*> nbrs(AdjList);
|
||||
nbrs.insert(nbrs.end(), otherNode->AdjList.begin(), otherNode->AdjList.end());
|
||||
sort(nbrs.begin(), nbrs.end());
|
||||
std::vector<IGNode*>::iterator new_end = unique(nbrs.begin(), nbrs.end());
|
||||
return new_end - nbrs.begin();
|
||||
}
|
||||
|
||||
|
||||
|
@ -6,29 +6,26 @@
|
||||
// the University of Illinois Open Source License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
/* Title: IGNode.h -*- C++ -*-
|
||||
Author: Ruchira Sasanka
|
||||
Date: July 25, 01
|
||||
Purpose: Represents a node in an interference graph.
|
||||
Notes:
|
||||
|
||||
For efficiency, the AdjList is updated only once - ie. we can add but not
|
||||
remove nodes from AdjList.
|
||||
|
||||
The removal of nodes from IG is simulated by decrementing the CurDegree.
|
||||
If this node is put on stack (that is removed from IG), the CurDegree of all
|
||||
the neighbors are decremented and this node is marked OnStack. Hence
|
||||
the effective neighbors in the AdjList are the ones that do not have the
|
||||
OnStack flag set (therefore, they are in the IG).
|
||||
|
||||
The methods that modify/use the CurDegree must be called only
|
||||
after all modifications to the IG are over (i.e., all neighbors are fixed).
|
||||
|
||||
The vector representation is the most efficient one for adj list.
|
||||
Though nodes are removed when coalescing is done, we access it in sequence
|
||||
for far many times when coloring (colorNode()).
|
||||
*/
|
||||
//
|
||||
// This file represents a node in an interference graph.
|
||||
//
|
||||
// For efficiency, the AdjList is updated only once - ie. we can add but not
|
||||
// remove nodes from AdjList.
|
||||
//
|
||||
// The removal of nodes from IG is simulated by decrementing the CurDegree.
|
||||
// If this node is put on stack (that is removed from IG), the CurDegree of all
|
||||
// the neighbors are decremented and this node is marked OnStack. Hence
|
||||
// the effective neighbors in the AdjList are the ones that do not have the
|
||||
// OnStack flag set (therefore, they are in the IG).
|
||||
//
|
||||
// The methods that modify/use the CurDegree must be called only
|
||||
// after all modifications to the IG are over (i.e., all neighbors are fixed).
|
||||
//
|
||||
// The vector representation is the most efficient one for adj list.
|
||||
// Though nodes are removed when coalescing is done, we access it in sequence
|
||||
// for far many times when coloring (colorNode()).
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef IGNODE_H
|
||||
#define IGNODE_H
|
||||
|
Loading…
Reference in New Issue
Block a user