diff options
-rw-r--r-- | llvm/lib/CodeGen/MachineBasicBlock.cpp | 30 | ||||
-rw-r--r-- | llvm/test/CodeGen/ARM/sched-it-debug-nodes.mir | 6 |
2 files changed, 26 insertions, 10 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: " diff --git a/llvm/test/CodeGen/ARM/sched-it-debug-nodes.mir b/llvm/test/CodeGen/ARM/sched-it-debug-nodes.mir index b70c3e5786a..318a371e87c 100644 --- a/llvm/test/CodeGen/ARM/sched-it-debug-nodes.mir +++ b/llvm/test/CodeGen/ARM/sched-it-debug-nodes.mir @@ -32,9 +32,9 @@ ; debug value as KILL'ed, resulting in a DEBUG_VALUE node changing codegen! (or ; hopefully, triggering an assert). - ; CHECK: BUNDLE implicit-def dead $itstate - ; CHECK: * DBG_VALUE debug-use $r1, debug-use $noreg, !"u" - ; CHECK-NOT: * DBG_VALUE killed $r1, $noreg, !"u" + ; CHECK: BUNDLE implicit-def dead $itstate{{.*}} { + ; CHECK: DBG_VALUE debug-use $r1, debug-use $noreg, !"u" + ; CHECK-NOT: DBG_VALUE killed $r1, $noreg, !"u" declare arm_aapcscc void @g(%struct.s*, i8*, i32) #1 |