diff options
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: " |