diff options
| -rw-r--r-- | llvm/lib/CodeGen/MachineInstr.cpp | 15 | ||||
| -rw-r--r-- | llvm/unittests/CodeGen/MachineInstrTest.cpp | 8 | 
2 files changed, 21 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/MachineInstr.cpp b/llvm/lib/CodeGen/MachineInstr.cpp index d3a09f06ebd..6ca8ead1c77 100644 --- a/llvm/lib/CodeGen/MachineInstr.cpp +++ b/llvm/lib/CodeGen/MachineInstr.cpp @@ -1469,10 +1469,23 @@ void MachineInstr::print(raw_ostream &OS, ModuleSlotTracker &MST,      return;    bool HaveSemi = false; +    // Print debug location information. +  if (const DebugLoc &DL = getDebugLoc()) { +    if (!HaveSemi) { +      OS << ';'; +      HaveSemi = true; +    } +    OS << ' '; +    DL.print(OS); +  } + +  // Print extra comments for DEBUG_VALUE.    if (isDebugValue() && getOperand(e - 2).isMetadata()) { -    if (!HaveSemi) +    if (!HaveSemi) {        OS << ";"; +      HaveSemi = true; +    }      auto *DV = cast<DILocalVariable>(getOperand(e - 2).getMetadata());      OS << " line no:" <<  DV->getLine();      if (auto *InlinedAt = debugLoc->getInlinedAt()) { diff --git a/llvm/unittests/CodeGen/MachineInstrTest.cpp b/llvm/unittests/CodeGen/MachineInstrTest.cpp index c0da2c3f396..6883d3ed63e 100644 --- a/llvm/unittests/CodeGen/MachineInstrTest.cpp +++ b/llvm/unittests/CodeGen/MachineInstrTest.cpp @@ -255,7 +255,11 @@ TEST(MachineInstrPrintingTest, DebugLocPrinting) {                        0, nullptr, nullptr, &OpInfo, 0, nullptr};    LLVMContext Ctx; -  DILocation *DIL = DILocation::get(Ctx, 1, 5, (Metadata *)nullptr, nullptr); +  DIFile *DIF = DIFile::getDistinct(Ctx, "filename", ""); +  DISubprogram *DIS = DISubprogram::getDistinct( +      Ctx, nullptr, "", "", DIF, 0, nullptr, false, false, 0, nullptr, 0, 0, 0, +      DINode::FlagZero, false, nullptr); +  DILocation *DIL = DILocation::get(Ctx, 1, 5, DIS);    DebugLoc DL(DIL);    MachineInstr *MI = MF->CreateMachineInstr(MCID, DL);    MI->addOperand(*MF, MachineOperand::CreateReg(0, /*isDef*/ true)); @@ -265,6 +269,8 @@ TEST(MachineInstrPrintingTest, DebugLocPrinting) {    MI->print(OS);    ASSERT_TRUE(        StringRef(OS.str()).startswith("$noreg = UNKNOWN debug-location ")); +  ASSERT_TRUE( +      StringRef(OS.str()).endswith("filename:1:5"));  }  } // end namespace  | 

