diff --git a/lib/CodeGen/RegAlloc/PhyRegAlloc.cpp b/lib/CodeGen/RegAlloc/PhyRegAlloc.cpp
index c39919a..253370e 100644
--- a/lib/CodeGen/RegAlloc/PhyRegAlloc.cpp
+++ b/lib/CodeGen/RegAlloc/PhyRegAlloc.cpp
@@ -350,7 +350,7 @@
 	    
 	    PushedRegSet.insert( Reg );
 	    StackOff -= 8; // ****TODO: Correct ??????
-	    cout << "\n $$$ Inserted caller saving instr";
+	    cerr << "\n $$$ Inserted caller saving instr";
 	    
 	  } // if not already pushed
 
@@ -405,9 +405,9 @@
 
 	  for( AdIt = IBef.begin(); AdIt != IBef.end() ; ++AdIt ) {
 
-	    cout << " *$* PREPENDed instr opcode: ";
-	    cout << TargetInstrDescriptors[(*AdIt)->getOpCode()].opCodeString;
-	    cout << endl;
+	    cerr << " *$* PREPENDed instr opcode: ";
+	    cerr << TargetInstrDescriptors[(*AdIt)->getOpCode()].opCodeString;
+	    cerr << endl;
 	    
 	    MInstIterator = MIVec.insert( MInstIterator, *AdIt );
 	    ++MInstIterator;
@@ -445,8 +445,9 @@
 	    // nothing to worry if it's a const or a label
 
             if (DEBUG_RA) {
-              cout << "*NO LR for inst opcode: ";
-              cout << TargetInstrDescriptors[MInst->getOpCode()].opCodeString;
+              cout << "*NO LR for operand : " << Op ;
+	      cout << " [reg:" <<  Op.getAllocatedRegNum() << "]";
+	      cout << " in inst:\t" << *MInst << endl;
             }
 
 	    // if register is not allocated, mark register as invalid
@@ -474,9 +475,11 @@
 
 	    if (Val->getValueType() == Value::InstructionVal)
 	    {
-	      cout << "!Warning: No LiveRange for: ";
-	      printValue( Val); cout << " Type: " << Val->getValueType();
-	      cout << " RegVal=" <<  Op.getAllocatedRegNum() << endl;
+	      if( DEBUG_RA ) {
+		cout << "!Warning: No LiveRange for: ";
+		printValue( Val); cout << " Type: " << Val->getValueType();
+		cout << " RegVal=" <<  Op.getAllocatedRegNum() << endl;
+	      }
 	    }
 
 #endif
@@ -510,9 +513,9 @@
 
 	  for( AdIt = IAft.begin(); AdIt != IAft.end() ; ++AdIt ) {
 
-	    cout << " *#* APPENDed instr opcode: ";
-	    cout << TargetInstrDescriptors[(*AdIt)->getOpCode()].opCodeString;
-	    cout << endl;
+	    cerr << " *#* APPENDed instr opcode: ";
+	    cerr << TargetInstrDescriptors[(*AdIt)->getOpCode()].opCodeString;
+	    cerr << endl;
 	    
 	    MInstIterator = MIVec.insert( MInstIterator, *AdIt );
 	    ++MInstIterator;
@@ -751,7 +754,7 @@
 
   updateMachineCode(); 
   if (DEBUG_RA) {
-    // PrintMachineInstructions(Meth);
+    PrintMachineInstructions(Meth);
     printMachineCode();                   // only for DEBUGGING
   }
 }
diff --git a/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp b/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp
index c39919a..253370e 100644
--- a/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp
+++ b/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp
@@ -350,7 +350,7 @@
 	    
 	    PushedRegSet.insert( Reg );
 	    StackOff -= 8; // ****TODO: Correct ??????
-	    cout << "\n $$$ Inserted caller saving instr";
+	    cerr << "\n $$$ Inserted caller saving instr";
 	    
 	  } // if not already pushed
 
@@ -405,9 +405,9 @@
 
 	  for( AdIt = IBef.begin(); AdIt != IBef.end() ; ++AdIt ) {
 
-	    cout << " *$* PREPENDed instr opcode: ";
-	    cout << TargetInstrDescriptors[(*AdIt)->getOpCode()].opCodeString;
-	    cout << endl;
+	    cerr << " *$* PREPENDed instr opcode: ";
+	    cerr << TargetInstrDescriptors[(*AdIt)->getOpCode()].opCodeString;
+	    cerr << endl;
 	    
 	    MInstIterator = MIVec.insert( MInstIterator, *AdIt );
 	    ++MInstIterator;
@@ -445,8 +445,9 @@
 	    // nothing to worry if it's a const or a label
 
             if (DEBUG_RA) {
-              cout << "*NO LR for inst opcode: ";
-              cout << TargetInstrDescriptors[MInst->getOpCode()].opCodeString;
+              cout << "*NO LR for operand : " << Op ;
+	      cout << " [reg:" <<  Op.getAllocatedRegNum() << "]";
+	      cout << " in inst:\t" << *MInst << endl;
             }
 
 	    // if register is not allocated, mark register as invalid
@@ -474,9 +475,11 @@
 
 	    if (Val->getValueType() == Value::InstructionVal)
 	    {
-	      cout << "!Warning: No LiveRange for: ";
-	      printValue( Val); cout << " Type: " << Val->getValueType();
-	      cout << " RegVal=" <<  Op.getAllocatedRegNum() << endl;
+	      if( DEBUG_RA ) {
+		cout << "!Warning: No LiveRange for: ";
+		printValue( Val); cout << " Type: " << Val->getValueType();
+		cout << " RegVal=" <<  Op.getAllocatedRegNum() << endl;
+	      }
 	    }
 
 #endif
@@ -510,9 +513,9 @@
 
 	  for( AdIt = IAft.begin(); AdIt != IAft.end() ; ++AdIt ) {
 
-	    cout << " *#* APPENDed instr opcode: ";
-	    cout << TargetInstrDescriptors[(*AdIt)->getOpCode()].opCodeString;
-	    cout << endl;
+	    cerr << " *#* APPENDed instr opcode: ";
+	    cerr << TargetInstrDescriptors[(*AdIt)->getOpCode()].opCodeString;
+	    cerr << endl;
 	    
 	    MInstIterator = MIVec.insert( MInstIterator, *AdIt );
 	    ++MInstIterator;
@@ -751,7 +754,7 @@
 
   updateMachineCode(); 
   if (DEBUG_RA) {
-    // PrintMachineInstructions(Meth);
+    PrintMachineInstructions(Meth);
     printMachineCode();                   // only for DEBUGGING
   }
 }
