[llvm] r262867 - [MIR] Teach the MIPrinter about size for generic virtual registers.
Quentin Colombet via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 7 13:57:52 PST 2016
Author: qcolombet
Date: Mon Mar 7 15:57:52 2016
New Revision: 262867
URL: http://llvm.org/viewvc/llvm-project?rev=262867&view=rev
Log:
[MIR] Teach the MIPrinter about size for generic virtual registers.
Modified:
llvm/trunk/lib/CodeGen/MIRPrinter.cpp
llvm/trunk/test/CodeGen/MIR/X86/generic-virtual-registers.mir
Modified: llvm/trunk/lib/CodeGen/MIRPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MIRPrinter.cpp?rev=262867&r1=262866&r2=262867&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/MIRPrinter.cpp (original)
+++ llvm/trunk/lib/CodeGen/MIRPrinter.cpp Mon Mar 7 15:57:52 2016
@@ -118,7 +118,8 @@ public:
void printOffset(int64_t Offset);
void printTargetFlags(const MachineOperand &Op);
void print(const MachineOperand &Op, const TargetRegisterInfo *TRI,
- unsigned I, bool ShouldPrintRegisterTies, bool IsDef = false);
+ unsigned I, bool ShouldPrintRegisterTies,
+ const MachineRegisterInfo *MRI = nullptr, bool IsDef = false);
void print(const MachineMemOperand &Op);
void print(const MCCFIInstruction &CFI, const TargetRegisterInfo *TRI);
@@ -525,7 +526,9 @@ static bool hasComplexRegisterTies(const
}
void MIPrinter::print(const MachineInstr &MI) {
- const auto &SubTarget = MI.getParent()->getParent()->getSubtarget();
+ const auto *MF = MI.getParent()->getParent();
+ const auto &MRI = MF->getRegInfo();
+ const auto &SubTarget = MF->getSubtarget();
const auto *TRI = SubTarget.getRegisterInfo();
assert(TRI && "Expected target register info");
const auto *TII = SubTarget.getInstrInfo();
@@ -540,7 +543,8 @@ void MIPrinter::print(const MachineInstr
++I) {
if (I)
OS << ", ";
- print(MI.getOperand(I), TRI, I, ShouldPrintRegisterTies, /*IsDef=*/true);
+ print(MI.getOperand(I), TRI, I, ShouldPrintRegisterTies, &MRI,
+ /*IsDef=*/true);
}
if (I)
@@ -727,7 +731,8 @@ static const char *getTargetIndexName(co
}
void MIPrinter::print(const MachineOperand &Op, const TargetRegisterInfo *TRI,
- unsigned I, bool ShouldPrintRegisterTies, bool IsDef) {
+ unsigned I, bool ShouldPrintRegisterTies,
+ const MachineRegisterInfo *MRI, bool IsDef) {
printTargetFlags(Op);
switch (Op.getType()) {
case MachineOperand::MO_Register:
@@ -754,6 +759,9 @@ void MIPrinter::print(const MachineOpera
OS << ':' << TRI->getSubRegIndexName(Op.getSubReg());
if (ShouldPrintRegisterTies && Op.isTied() && !Op.isDef())
OS << "(tied-def " << Op.getParent()->findTiedOperandIdx(I) << ")";
+ assert((!IsDef || MRI) && "for IsDef, MRI must be provided");
+ if (IsDef && MRI->getSize(Op.getReg()))
+ OS << '(' << MRI->getSize(Op.getReg()) << ')';
break;
case MachineOperand::MO_Immediate:
OS << Op.getImm();
Modified: llvm/trunk/test/CodeGen/MIR/X86/generic-virtual-registers.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/MIR/X86/generic-virtual-registers.mir?rev=262867&r1=262866&r2=262867&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/MIR/X86/generic-virtual-registers.mir (original)
+++ llvm/trunk/test/CodeGen/MIR/X86/generic-virtual-registers.mir Mon Mar 7 15:57:52 2016
@@ -12,6 +12,6 @@ registers:
body: |
bb.0.entry:
liveins: %edi
- ; CHECK: %0 = G_ADD %edi
+ ; CHECK: %0(32) = G_ADD %edi
%0(32) = G_ADD %edi, %edi
...
More information about the llvm-commits
mailing list