diff options
author | Francis Visoiu Mistrih <francisvm@yahoo.com> | 2018-02-13 18:08:26 +0000 |
---|---|---|
committer | Francis Visoiu Mistrih <francisvm@yahoo.com> | 2018-02-13 18:08:26 +0000 |
commit | f6ed795d0c06a66f0a29ea4f3f37e60dba79de57 (patch) | |
tree | 417e06dadc4f2d50ce7f26dcece6026153a80521 /llvm/lib/CodeGen/MachineBasicBlock.cpp | |
parent | 651bd73c025248cea9e9c61ceef359edbde88eb7 (diff) | |
download | bcm5719-llvm-f6ed795d0c06a66f0a29ea4f3f37e60dba79de57.tar.gz bcm5719-llvm-f6ed795d0c06a66f0a29ea4f3f37e60dba79de57.zip |
[CodeGen] Print bundled instructions using the MIR syntax in -debug output
Old syntax:
BUNDLE implicit-def %r0, implicit-def %r1, implicit %r2
* %r0 = SOME_OP %r2
* %r1 = ANOTHER_OP internal %r0
New syntax:
BUNDLE implicit-def %r0, implicit-def %r1, implicit %r2 {
%r0 = SOME_OP %r2
%r1 = ANOTHER_OP internal %r0
}
llvm-svn: 325032
Diffstat (limited to 'llvm/lib/CodeGen/MachineBasicBlock.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineBasicBlock.cpp | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/llvm/lib/CodeGen/MachineBasicBlock.cpp b/llvm/lib/CodeGen/MachineBasicBlock.cpp index 923aad6395d..46419ed0ab2 100644 --- a/llvm/lib/CodeGen/MachineBasicBlock.cpp +++ b/llvm/lib/CodeGen/MachineBasicBlock.cpp @@ -324,6 +324,7 @@ void MachineBasicBlock::print(raw_ostream &OS, ModuleSlotTracker &MST, const TargetRegisterInfo *TRI = MF->getSubtarget().getRegisterInfo(); const MachineRegisterInfo &MRI = MF->getRegInfo(); + const TargetInstrInfo &TII = *getParent()->getSubtarget().getInstrInfo(); if (!livein_empty() && MRI.tracksLiveness()) { if (Indexes) OS << '\t'; OS.indent(2) << "liveins: "; @@ -384,19 +385,34 @@ void MachineBasicBlock::print(raw_ostream &OS, ModuleSlotTracker &MST, OS << '\n'; } - for (auto &I : instrs()) { + bool IsInBundle = false; + for (const MachineInstr &MI : instrs()) { if (Indexes) { - if (Indexes->hasIndex(I)) - OS << Indexes->getInstructionIndex(I); + if (Indexes->hasIndex(MI)) + OS << Indexes->getInstructionIndex(MI); OS << '\t'; } - OS << '\t'; - if (I.isInsideBundle()) - OS << " * "; - I.print(OS, MST, IsStandalone); + + if (IsInBundle && !MI.isInsideBundle()) { + OS.indent(2) << "}\n"; + IsInBundle = false; + } + + OS.indent(IsInBundle ? 4 : 2); + MI.print(OS, MST, IsStandalone, /*SkipOpers=*/false, /*SkipDebugLoc=*/false, + &TII); + + if (!IsInBundle && MI.getFlag(MachineInstr::BundledSucc)) { + OS << " {"; + IsInBundle = true; + } + OS << '\n'; } + if (IsInBundle) + OS.indent(2) << "}\n"; + if (IrrLoopHeaderWeight) { if (Indexes) OS << '\t'; OS << " Irreducible loop header weight: " |