diff --git a/lib/CodeGen/MachineInstr.cpp b/lib/CodeGen/MachineInstr.cpp index f0a9645c4ec..a2393eb7331 100644 --- a/lib/CodeGen/MachineInstr.cpp +++ b/lib/CodeGen/MachineInstr.cpp @@ -10,6 +10,7 @@ #include "llvm/Target/MRegisterInfo.h" using std::cerr; + // Global variable holding an array of descriptors for machine instructions. // The actual object needs to be created separately for each target machine. // This variable is initialized and reset by class MachineInstrInfo. @@ -268,6 +269,15 @@ static void print(const MachineOperand &MO, std::ostream &OS, case MachineOperand::MO_FrameIndex: OS << ""; break; + case MachineOperand::MO_ConstantPoolIndex: + OS << ""; + break; + case MachineOperand::MO_GlobalAddress: + OS << "getName() << ">"; + break; + case MachineOperand::MO_ExternalSymbol: + OS << ""; + break; default: assert(0 && "Unrecognized operand type"); } @@ -316,26 +326,26 @@ void MachineInstr::print(std::ostream &OS, const TargetMachine &TM) const { } -std::ostream &operator<<(std::ostream& os, const MachineInstr& minstr) +std::ostream &operator<<(std::ostream& os, const MachineInstr& MI) { - os << TargetInstrDescriptors[minstr.opCode].Name; + os << TargetInstrDescriptors[MI.opCode].Name; - for (unsigned i=0, N=minstr.getNumOperands(); i < N; i++) { - os << "\t" << minstr.getOperand(i); - if( minstr.operandIsDefined(i) ) - os << "*"; - if( minstr.operandIsDefinedAndUsed(i) ) - os << "*"; + for (unsigned i=0, N=MI.getNumOperands(); i < N; i++) { + os << "\t" << MI.getOperand(i); + if (MI.operandIsDefined(i)) + os << ""; + if (MI.operandIsDefinedAndUsed(i)) + os << ""; } // code for printing implict references - unsigned NumOfImpRefs = minstr.getNumImplicitRefs(); - if( NumOfImpRefs > 0 ) { + unsigned NumOfImpRefs = MI.getNumImplicitRefs(); + if (NumOfImpRefs > 0) { os << "\tImplicit: "; - for(unsigned z=0; z < NumOfImpRefs; z++) { - OutputValue(os, minstr.getImplicitRef(z)); - if( minstr.implicitRefIsDefined(z)) os << "*"; - if( minstr.implicitRefIsDefinedAndUsed(z)) os << "*"; + for (unsigned z=0; z < NumOfImpRefs; z++) { + OutputValue(os, MI.getImplicitRef(z)); + if (MI.implicitRefIsDefined(z)) os << ""; + if (MI.implicitRefIsDefinedAndUsed(z)) os << ""; os << "\t"; } } @@ -357,11 +367,13 @@ std::ostream &operator<<(std::ostream &OS, const MachineOperand &MO) switch (MO.getType()) { case MachineOperand::MO_VirtualRegister: - OS << "%reg"; - OutputValue(OS, MO.getVRegValue()); - if (MO.hasAllocatedReg()) { - OS << "=="; + if (MO.hasAllocatedReg()) OutputReg(OS, MO.getAllocatedRegNum()); + + if (MO.getVRegValue()) { + if (MO.hasAllocatedReg()) OS << "=="; + OS << "%vreg"; + OutputValue(OS, MO.getVRegValue()); } break; case MachineOperand::MO_CCRegister: @@ -401,6 +413,15 @@ std::ostream &operator<<(std::ostream &OS, const MachineOperand &MO) case MachineOperand::MO_FrameIndex: OS << ""; break; + case MachineOperand::MO_ConstantPoolIndex: + OS << ""; + break; + case MachineOperand::MO_GlobalAddress: + OS << "getName() << ">"; + break; + case MachineOperand::MO_ExternalSymbol: + OS << ""; + break; default: assert(0 && "Unrecognized operand type"); break;