Commit 28ba80e6 authored by Misha Brukman's avatar Misha Brukman
Browse files

* 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
parent ad44de18
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -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.
// 
//===----------------------------------------------------------------------===//

@@ -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();
}

+20 −23
Original line number Diff line number Diff line
@@ -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