mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
fixed printing messages
llvm-svn: 590
This commit is contained in:
parent
6807a780c5
commit
c1514789f3
@ -120,8 +120,10 @@ void LiveRangeInfo::constructLiveRanges()
|
||||
OpI.getMachineOperand().getVRegValue(), isCC );
|
||||
|
||||
|
||||
if(isCC )
|
||||
cout << "\a" << "**created a LR for a CC reg**" << cout;
|
||||
if(isCC ) {
|
||||
cout << "\a**created a LR for a CC reg:";
|
||||
printValue( OpI.getMachineOperand().getVRegValue() );
|
||||
}
|
||||
|
||||
DefRange->setRegClass( RegClassList[ rcid ] );
|
||||
|
||||
|
@ -28,7 +28,7 @@ PhyRegAlloc::PhyRegAlloc(const Method *const M,
|
||||
|
||||
void PhyRegAlloc::createIGNodeListsAndIGs()
|
||||
{
|
||||
cout << "Creating LR lists ..." << endl;
|
||||
if(DEBUG_RA ) cout << "Creating LR lists ..." << endl;
|
||||
|
||||
// hash map iterator
|
||||
LiveRangeMapType::const_iterator HMI = (LRI.getLiveRangeMap())->begin();
|
||||
@ -113,7 +113,7 @@ void PhyRegAlloc::addInterference(const Value *const Def,
|
||||
LROfVar->addCallInterference( (const Instruction *const) Def );
|
||||
|
||||
}
|
||||
else if(DEBUG_RA) {
|
||||
else if(DEBUG_RA > 1) {
|
||||
// we will not have LRs for values not explicitly allocated in the
|
||||
// instruction stream (e.g., constants)
|
||||
cout << " warning: no live range for " ;
|
||||
@ -221,7 +221,73 @@ void PhyRegAlloc::updateMachineCode()
|
||||
|
||||
for( ; BBI != Meth->end(); ++BBI) { // traverse BBs in random order
|
||||
|
||||
cout << endl << "BB "; printValue( *BBI); cout << ": ";
|
||||
// get the iterator for machine instructions
|
||||
MachineCodeForBasicBlock& MIVec = (*BBI)->getMachineInstrVec();
|
||||
MachineCodeForBasicBlock::iterator MInstIterator = MIVec.begin();
|
||||
|
||||
// iterate over all the machine instructions in BB
|
||||
for( ; MInstIterator != MIVec.end(); ++MInstIterator) {
|
||||
|
||||
MachineInstr *const MInst = *MInstIterator;
|
||||
|
||||
//for(MachineInstr::val_op_const_iterator OpI(MInst);!OpI.done();++OpI) {
|
||||
|
||||
for(unsigned OpNum=0; OpNum < MInst->getNumOperands(); ++OpNum) {
|
||||
|
||||
MachineOperand& Op = MInst->getOperand(OpNum);
|
||||
|
||||
if( Op.getOperandType() == MachineOperand::MO_VirtualRegister ||
|
||||
Op.getOperandType() == MachineOperand::MO_CCRegister) {
|
||||
|
||||
const Value *const Val = Op.getVRegValue();
|
||||
|
||||
// delete this condition checking later (must assert if Val is null)
|
||||
if( !Val ) {
|
||||
cout << "Error: NULL Value found in instr." << endl;
|
||||
continue;
|
||||
}
|
||||
assert( Val && "Value is NULL");
|
||||
|
||||
const LiveRange *const LR = LRI.getLiveRangeForValue(Val);
|
||||
|
||||
if ( !LR ) {
|
||||
if( ! ( (Val->getType())->isLabelType() ||
|
||||
(Val->getValueType() == Value::ConstantVal) ) ) {
|
||||
cout << "Warning: No LiveRange for: ";
|
||||
printValue( Val); cout << endl;
|
||||
}
|
||||
|
||||
//assert( LR && "No LR found for Value");
|
||||
continue;
|
||||
}
|
||||
|
||||
unsigned RCID = (LR->getRegClass())->getID();
|
||||
|
||||
Op.setRegForValue( MRI.getUnifiedRegNum(RCID, LR->getColor()) );
|
||||
|
||||
int RegNum = MRI.getUnifiedRegNum(RCID, LR->getColor());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void PhyRegAlloc::printMachineCode()
|
||||
{
|
||||
|
||||
cout << endl << ";************** Method ";
|
||||
cout << Meth->getName() << " *****************" << endl;
|
||||
|
||||
Method::const_iterator BBI = Meth->begin(); // random iterator for BBs
|
||||
|
||||
for( ; BBI != Meth->end(); ++BBI) { // traverse BBs in random order
|
||||
|
||||
cout << endl ; printLabel( *BBI); cout << ": ";
|
||||
|
||||
// get the iterator for machine instructions
|
||||
MachineCodeForBasicBlock& MIVec = (*BBI)->getMachineInstrVec();
|
||||
@ -232,9 +298,11 @@ void PhyRegAlloc::updateMachineCode()
|
||||
|
||||
MachineInstr *const MInst = *MInstIterator;
|
||||
|
||||
|
||||
cout << endl << "\t";
|
||||
cout << TargetInstrDescriptors[MInst->getOpCode()].opCodeString;
|
||||
|
||||
|
||||
//for(MachineInstr::val_op_const_iterator OpI(MInst);!OpI.done();++OpI) {
|
||||
|
||||
for(unsigned OpNum=0; OpNum < MInst->getNumOperands(); ++OpNum) {
|
||||
@ -247,7 +315,7 @@ void PhyRegAlloc::updateMachineCode()
|
||||
const Value *const Val = Op.getVRegValue();
|
||||
|
||||
if( !Val ) {
|
||||
cout << "\t<** Value is NULL!!!**>";
|
||||
cout << "\t<*NULL Value*>";
|
||||
continue;
|
||||
}
|
||||
assert( Val && "Value is NULL");
|
||||
@ -255,6 +323,8 @@ void PhyRegAlloc::updateMachineCode()
|
||||
const LiveRange *const LR = LRI.getLiveRangeForValue(Val);
|
||||
|
||||
if ( !LR ) {
|
||||
|
||||
|
||||
if( ! ( (Val->getType())->isLabelType() ||
|
||||
(Val->getValueType() == Value::ConstantVal) ) ) {
|
||||
cout << "\t" << "<*No LiveRange for: ";
|
||||
@ -271,22 +341,50 @@ void PhyRegAlloc::updateMachineCode()
|
||||
//cout << "Setting reg for value: "; printValue( Val );
|
||||
//cout << endl;
|
||||
|
||||
//Op.setRegForValue( MRI.getUnifiedRegNum(RCID, LR->getColor()) );
|
||||
Op.setRegForValue( MRI.getUnifiedRegNum(RCID, LR->getColor()) );
|
||||
|
||||
int RegNum = MRI.getUnifiedRegNum(RCID, LR->getColor());
|
||||
|
||||
cout << "\t" << "%" << MRI.getUnifiedRegName( RegNum );
|
||||
|
||||
}
|
||||
else if( Op.getOperandType() == MachineOperand:: MO_MachineRegister) {
|
||||
cout << "\t" << "%"<< MRI.getUnifiedRegName( Op.getMachineRegNum() );
|
||||
}
|
||||
else if( Op.getOperandType() == MachineOperand::MO_PCRelativeDisp ) {
|
||||
const Value *const Val = Op.getVRegValue () ;
|
||||
if( !Val ) {
|
||||
cout << "\t<*NULL Value*>";
|
||||
continue;
|
||||
}
|
||||
if( (Val->getValueType() == Value::BasicBlockVal))
|
||||
{ cout << "\t"; printLabel( Op.getVRegValue () ); }
|
||||
else { cout << "\t"; printValue( Val ); }
|
||||
}
|
||||
|
||||
else
|
||||
cout << "\t" << Op; // use dump field
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
cout << endl;
|
||||
|
||||
}
|
||||
|
||||
cout << endl;
|
||||
}
|
||||
|
||||
void PhyRegAlloc::printLabel(const Value *const Val)
|
||||
{
|
||||
if( Val->hasName() )
|
||||
cout << Val->getName();
|
||||
else
|
||||
cout << "Label" << Val;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -328,14 +426,16 @@ void PhyRegAlloc::allocateRegisters()
|
||||
}
|
||||
|
||||
MRI.colorArgs(Meth, LRI); // color method args
|
||||
MRI.colorCallArgs(CallInstrList, LRI, AddedInstrMap); // color call args of call instrns
|
||||
// color call args of call instrns
|
||||
MRI.colorCallArgs(CallInstrList, LRI, AddedInstrMap);
|
||||
|
||||
// color all register classes
|
||||
for( unsigned int rc=0; rc < NumOfRegClasses ; rc++)
|
||||
RegClassList[ rc ]->colorAllRegs();
|
||||
|
||||
updateMachineCode();
|
||||
//PrintMachineInstructions(Meth);
|
||||
//updateMachineCode();
|
||||
PrintMachineInstructions(Meth);
|
||||
printMachineCode(); // only for DEBUGGING
|
||||
}
|
||||
|
||||
|
||||
|
@ -169,34 +169,21 @@ void RegClass::colorIGNode(IGNode *const Node)
|
||||
MRC->colorIGNode(Node, IsColorUsedArr);
|
||||
}
|
||||
else {
|
||||
if( DEBUG_RA ) {
|
||||
cout << " Node " << Node->getIndex();
|
||||
cout << " already colored with color " << Node->getColor() << endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if( !Node->hasColor() ) {
|
||||
if( DEBUG_RA ) {
|
||||
cout << " Node " << Node->getIndex();
|
||||
cout << " - could not find a color (needs spilling)" << endl;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
|
||||
if( DEBUG_RA) { // printing code
|
||||
/* cout << " Node " << Node->getIndex();
|
||||
if( Node->hasColor() ) {
|
||||
cout << " colored with color " << Node->getColor() << " [" ;
|
||||
cout << SparcFloatRegOrder::getRegName(Node->getColor());
|
||||
if( Node->getTypeID() == Type::DoubleTyID )
|
||||
cout << "+" << SparcFloatRegOrder::getRegName(Node->getColor()+1);
|
||||
cout << "]" << endl;
|
||||
}
|
||||
*/
|
||||
// MRC->printReg( Node->getParentLR());
|
||||
cout << " Node " << Node->getIndex();
|
||||
if( Node->hasColor() )
|
||||
cout << " colored with color " << Node->getColor() << endl;
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user