diff --git a/llvm/lib/CodeGen/MachineBasicBlock.cpp b/llvm/lib/CodeGen/MachineBasicBlock.cpp --- a/llvm/lib/CodeGen/MachineBasicBlock.cpp +++ b/llvm/lib/CodeGen/MachineBasicBlock.cpp @@ -39,6 +39,12 @@ #define DEBUG_TYPE "codegen" +static cl::opt PrintSlotIndexes( + "print-slotindexes", + cl::desc("When printing machine IR, annotate instructions and blocks with " + "SlotIndexes when available"), + cl::init(true), cl::Hidden); + MachineBasicBlock::MachineBasicBlock(MachineFunction &MF, const BasicBlock *B) : BB(B), Number(-1), xParent(&MF) { Insts.Parent = this; @@ -291,7 +297,7 @@ return; } - if (Indexes) + if (Indexes && PrintSlotIndexes) OS << Indexes->getMBBStartIdx(this) << '\t'; OS << "bb." << getNumber(); @@ -402,7 +408,7 @@ bool IsInBundle = false; for (const MachineInstr &MI : instrs()) { - if (Indexes) { + if (Indexes && PrintSlotIndexes) { if (Indexes->hasIndex(MI)) OS << Indexes->getInstructionIndex(MI); OS << '\t'; diff --git a/llvm/test/Other/print-slotindexes.ll b/llvm/test/Other/print-slotindexes.ll new file mode 100644 --- /dev/null +++ b/llvm/test/Other/print-slotindexes.ll @@ -0,0 +1,12 @@ +; RUN: llc -print-after=slotindexes < %s 2>&1 | FileCheck %s --check-prefixes=ALL,SI +; RUN: llc -print-after=slotindexes -print-slotindexes=false < %s 2>&1 | FileCheck %s --check-prefixes=ALL,NOSI +; REQUIRES: default_triple +define void @foo(){ + ret void +} + +;CHECK: IR Dump {{.*}} +;CHECK: # Machine code for function foo{{.*}} +;SI: {{[0-9]+}}B bb.0 (%ir-block.0) +;NOSI: {{^}}bb.0 (%ir-block.0) +