[llvm-commits] [llvm] r63968 - in /llvm/trunk/lib/Target/X86/AsmPrinter: X86ATTAsmPrinter.cpp X86ATTAsmPrinter.h

Bill Wendling isanbard at gmail.com
Fri Feb 6 13:45:09 PST 2009


Author: void
Date: Fri Feb  6 15:45:08 2009
New Revision: 63968

URL: http://llvm.org/viewvc/llvm-project?rev=63968&view=rev
Log:
Record debug location information in the Dwarf writer.

A simple test program shows that debugging works. :-)

Modified:
    llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
    llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h

Modified: llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp?rev=63968&r1=63967&r2=63968&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp Fri Feb  6 15:45:08 2009
@@ -207,6 +207,7 @@
 ///
 bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
   const Function *F = MF.getFunction();
+  this->MF = &MF;
   unsigned CC = F->getCallingConv();
 
   SetupMachineFunction(MF);
@@ -718,12 +719,24 @@
   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);
 }

Modified: llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h?rev=63968&r1=63967&r2=63968&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h (original)
+++ llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h Fri Feb  6 15:45:08 2009
@@ -29,6 +29,7 @@
 struct MachineJumpTableInfo;
 
 struct VISIBILITY_HIDDEN X86ATTAsmPrinter : public AsmPrinter {
+  MachineFunction *MF;
   DwarfWriter *DW;
   MachineModuleInfo *MMI;
   const X86Subtarget *Subtarget;





More information about the llvm-commits mailing list