Added code so that colorIGNode does not unnecessarily reserve unusable
Suggested colors for neighbors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@921 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/SparcV9/SparcV9RegClassInfo.cpp b/lib/Target/SparcV9/SparcV9RegClassInfo.cpp
index 02b67a1..f79dd58 100644
--- a/lib/Target/SparcV9/SparcV9RegClassInfo.cpp
+++ b/lib/Target/SparcV9/SparcV9RegClassInfo.cpp
@@ -31,9 +31,13 @@
     if( NeighLR->hasColor() )                        // if has a color
       IsColorUsedArr[ NeighLR->getColor() ] = true; // record that color
 
-    else if( NeighLR->hasSuggestedColor() )        // or has a suggest col   
-      IsColorUsedArr[ NeighLR->getSuggestedColor() ] = true; 
-    
+    else if( NeighLR->hasSuggestedColor() ) {
+
+	// if the neighbout can use the suggested color 
+	if( NeighLR-> isSuggestedColorUsable() ) 
+	  IsColorUsedArr[ NeighLR->getSuggestedColor() ] = true; 
+    }    
+
   }
 
   if( DEBUG_RA ) {
@@ -49,7 +53,7 @@
 
     if( ! IsColorUsedArr[ SugCol ] ) {
 
-      if(! (isRegVolatile( SugCol ) &&  LR->isCallInterference()) ) {
+      if( LR->isSuggestedColorUsable()  ) {
 
 	// if the suggested color is volatile, we should use it only if
 	// there are no call interferences. Otherwise, it will get spilled.
@@ -205,9 +209,16 @@
 	  IsColorUsedArr[ (NeighLR->getColor()) + 1 ] = true;  
       }
       else if( NeighLR->hasSuggestedColor() )   {   // if neigh has sugg color
-      	IsColorUsedArr[ NeighLR->getSuggestedColor() ] = true;
-	if( NeighLR->getTypeID() == Type::DoubleTyID )
-	  IsColorUsedArr[ (NeighLR->getSuggestedColor()) + 1 ] = true;  
+
+	if( NeighLR-> isSuggestedColorUsable() ) {
+
+	  // if the neighbout can use the suggested color 
+	  
+	  IsColorUsedArr[ NeighLR->getSuggestedColor() ] = true;
+	  if( NeighLR->getTypeID() == Type::DoubleTyID )
+	    IsColorUsedArr[ (NeighLR->getSuggestedColor()) + 1 ] = true;  
+	}
+
       }
 
   }