From ac06d004a0ac856a747e612708ad4541b18aa165 Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Fri, 6 Feb 2009 21:45:08 +0000 Subject: [PATCH] Record debug location information in the Dwarf writer. A simple test program shows that debugging works. :-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63968 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp | 17 +++++++++++++++-- lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h | 1 + 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp b/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp index 9e0afc8d6f2..847355c50d7 100644 --- a/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp +++ b/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp @@ -207,6 +207,7 @@ void X86ATTAsmPrinter::emitFunctionHeader(const MachineFunction &MF) { /// bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) { const Function *F = MF.getFunction(); + this->MF = &MF; unsigned CC = F->getCallingConv(); SetupMachineFunction(MF); @@ -718,12 +719,24 @@ bool X86ATTAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI, return false; } -/// printMachineInstruction -- Print out a single X86 LLVM instruction -/// MI in AT&T syntax to the current output stream. +/// printMachineInstruction -- Print out a single X86 LLVM instruction MI in +/// AT&T syntax to the current output stream. /// void X86ATTAsmPrinter::printMachineInstruction(const MachineInstr *MI) { ++EmittedInsts; + if (TAI->doesSupportDebugInformation()) { + static DebugLoc PrevDL = DebugLoc::getUnknownLoc(); + DebugLoc CurDL = MI->getDebugLoc(); + + if (!CurDL.isInvalid() && !CurDL.isUnknown() && PrevDL != CurDL) { + DebugLocTuple DLT = MF->getDebugLocTuple(CurDL); + printLabel(DW->RecordSourceLine(DLT.Line, DLT.Col, DLT.Src)); + } + + PrevDL = CurDL; + } + // Call the autogenerated instruction printer routines. printInstruction(MI); } diff --git a/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h b/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h index 3732ce86a86..6be9958dcf1 100644 --- a/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h +++ b/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h @@ -29,6 +29,7 @@ namespace llvm { struct MachineJumpTableInfo; struct VISIBILITY_HIDDEN X86ATTAsmPrinter : public AsmPrinter { + MachineFunction *MF; DwarfWriter *DW; MachineModuleInfo *MMI; const X86Subtarget *Subtarget; -- 2.34.1