[llvm-commits] CVS: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp X86ATTAsmPrinter.h X86AsmPrinter.cpp X86AsmPrinter.h X86ISelLowering.cpp X86InstrInfo.td X86IntelAsmPrinter.cpp X86IntelAsmPrinter.h

Evan Cheng evan.cheng at apple.com
Mon Mar 6 18:03:10 PST 2006



Changes in directory llvm/lib/Target/X86:

X86ATTAsmPrinter.cpp updated: 1.28 -> 1.29
X86ATTAsmPrinter.h updated: 1.8 -> 1.9
X86AsmPrinter.cpp updated: 1.167 -> 1.168
X86AsmPrinter.h updated: 1.11 -> 1.12
X86ISelLowering.cpp updated: 1.102 -> 1.103
X86InstrInfo.td updated: 1.251 -> 1.252
X86IntelAsmPrinter.cpp updated: 1.21 -> 1.22
X86IntelAsmPrinter.h updated: 1.9 -> 1.10
---
Log message:

Enable Dwarf debugging info.


---
Diffs of the changes:  (+83 -6)

 X86ATTAsmPrinter.cpp   |   14 +++++++++++++-
 X86ATTAsmPrinter.h     |    2 +-
 X86AsmPrinter.cpp      |    6 ++++++
 X86AsmPrinter.h        |   38 ++++++++++++++++++++++++++++++++++++--
 X86ISelLowering.cpp    |    4 +++-
 X86InstrInfo.td        |   13 +++++++++++++
 X86IntelAsmPrinter.cpp |   10 ++++++++++
 X86IntelAsmPrinter.h   |    2 +-
 8 files changed, 83 insertions(+), 6 deletions(-)


Index: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp
diff -u llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.28 llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.29
--- llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.28	Sun Feb 26 02:28:12 2006
+++ llvm/lib/Target/X86/X86ATTAsmPrinter.cpp	Mon Mar  6 20:02:57 2006
@@ -27,9 +27,16 @@
 /// method to print assembly for each instruction.
 ///
 bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
+  // Let PassManager know we need debug information and relay
+  // the MachineDebugInfo address on to DwarfWriter.
+  DW.SetDebugInfo(&getAnalysis<MachineDebugInfo>());
+
   SetupMachineFunction(MF);
   O << "\n\n";
 
+  // Emit pre-function debug information.
+  DW.BeginFunction(MF);
+
   // Print out constants referenced by the function
   EmitConstantPool(MF.getConstantPool());
 
@@ -81,6 +88,9 @@
   if (HasDotTypeDotSizeDirective)
     O << "\t.size " << CurrentFnName << ", .-" << CurrentFnName << "\n";
 
+  // Emit post-function debug information.
+  DW.EndFunction(MF);
+
   // We didn't modify anything.
   return false;
 }
@@ -101,7 +111,9 @@
 
   case MachineOperand::MO_SignExtendedImmed:
   case MachineOperand::MO_UnextendedImmed:
-    O << '$' << (int)MO.getImmedValue();
+    if (!Modifier || strcmp(Modifier, "debug") != 0)
+      O << '$';
+    O << (int)MO.getImmedValue();
     return;
   case MachineOperand::MO_MachineBasicBlock: {
     MachineBasicBlock *MBBOp = MO.getMachineBasicBlock();


Index: llvm/lib/Target/X86/X86ATTAsmPrinter.h
diff -u llvm/lib/Target/X86/X86ATTAsmPrinter.h:1.8 llvm/lib/Target/X86/X86ATTAsmPrinter.h:1.9
--- llvm/lib/Target/X86/X86ATTAsmPrinter.h:1.8	Tue Feb 21 20:26:30 2006
+++ llvm/lib/Target/X86/X86ATTAsmPrinter.h	Mon Mar  6 20:02:57 2006
@@ -21,7 +21,7 @@
 namespace x86 {
 
 struct X86ATTAsmPrinter : public X86SharedAsmPrinter {
-  X86ATTAsmPrinter(std::ostream &O, TargetMachine &TM)
+ X86ATTAsmPrinter(std::ostream &O, TargetMachine &TM)
     : X86SharedAsmPrinter(O, TM) { }
 
   virtual const char *getPassName() const {


Index: llvm/lib/Target/X86/X86AsmPrinter.cpp
diff -u llvm/lib/Target/X86/X86AsmPrinter.cpp:1.167 llvm/lib/Target/X86/X86AsmPrinter.cpp:1.168
--- llvm/lib/Target/X86/X86AsmPrinter.cpp:1.167	Wed Feb 22 23:25:02 2006
+++ llvm/lib/Target/X86/X86AsmPrinter.cpp	Mon Mar  6 20:02:57 2006
@@ -75,6 +75,9 @@
   default: break;
   }
   
+  // Emit initial debug information.
+  DW.BeginModule(M);
+
   return AsmPrinter::doInitialization(M);
 }
 
@@ -187,6 +190,9 @@
     }
   }
 
+  // Emit initial debug information.
+  DW.EndModule(M);
+
   AsmPrinter::doFinalization(M);
   return false; // success
 }


Index: llvm/lib/Target/X86/X86AsmPrinter.h
diff -u llvm/lib/Target/X86/X86AsmPrinter.h:1.11 llvm/lib/Target/X86/X86AsmPrinter.h:1.12
--- llvm/lib/Target/X86/X86AsmPrinter.h:1.11	Sat Feb 25 03:56:50 2006
+++ llvm/lib/Target/X86/X86AsmPrinter.h	Mon Mar  6 20:02:57 2006
@@ -18,6 +18,8 @@
 
 #include "X86.h"
 #include "llvm/CodeGen/AsmPrinter.h"
+#include "llvm/CodeGen/DwarfWriter.h"
+#include "llvm/CodeGen/MachineDebugInfo.h"
 #include "llvm/ADT/Statistic.h"
 #include <set>
 
@@ -27,14 +29,46 @@
 
 extern Statistic<> EmittedInsts;
 
+/// X86DwarfWriter - Dwarf debug info writer customized for Darwin/Mac OS X
+///
+struct X86DwarfWriter : public DwarfWriter {
+ // Ctor.
+X86DwarfWriter(std::ostream &o, AsmPrinter *ap)
+  : DwarfWriter(o, ap)
+    {
+      needsSet = true;
+      DwarfAbbrevSection = ".section __DWARFA,__debug_abbrev";
+      DwarfInfoSection = ".section __DWARFA,__debug_info";
+      DwarfLineSection = ".section __DWARFA,__debug_line";
+      DwarfFrameSection = ".section __DWARFA,__debug_frame";
+      DwarfPubNamesSection = ".section __DWARFA,__debug_pubnames";
+      DwarfPubTypesSection = ".section __DWARFA,__debug_pubtypes";
+      DwarfStrSection = ".section __DWARFA,__debug_str";
+      DwarfLocSection = ".section __DWARFA,__debug_loc";
+      DwarfARangesSection = ".section __DWARFA,__debug_aranges";
+      DwarfRangesSection = ".section __DWARFA,__debug_ranges";
+      DwarfMacInfoSection = ".section __DWARFA,__debug_macinfo";
+      TextSection = ".text";
+       DataSection = ".data";
+    }
+};
+
 struct X86SharedAsmPrinter : public AsmPrinter {
+  X86DwarfWriter DW;
+
   X86SharedAsmPrinter(std::ostream &O, TargetMachine &TM)
-    : AsmPrinter(O, TM), forDarwin(false) { }
+    : AsmPrinter(O, TM), DW(O, this), forDarwin(false) { }
 
   bool doInitialization(Module &M);
   bool doFinalization(Module &M);
 
-  bool forDarwin;  // FIXME: eliminate.
+  void getAnalysisUsage(AnalysisUsage &AU) const {
+    AU.setPreservesAll();
+    AU.addRequired<MachineDebugInfo>();
+    MachineFunctionPass::getAnalysisUsage(AU);
+  }
+
+    bool forDarwin;  // FIXME: eliminate.
 
   // Necessary for Darwin to print out the apprioriate types of linker stubs
   std::set<std::string> FnStubs, GVStubs, LinkOnceStubs;


Index: llvm/lib/Target/X86/X86ISelLowering.cpp
diff -u llvm/lib/Target/X86/X86ISelLowering.cpp:1.102 llvm/lib/Target/X86/X86ISelLowering.cpp:1.103
--- llvm/lib/Target/X86/X86ISelLowering.cpp:1.102	Sat Mar  4 23:08:37 2006
+++ llvm/lib/Target/X86/X86ISelLowering.cpp	Mon Mar  6 20:02:57 2006
@@ -168,7 +168,9 @@
   // We don't have line number support yet.
   setOperationAction(ISD::LOCATION, MVT::Other, Expand);
   setOperationAction(ISD::DEBUG_LOC, MVT::Other, Expand);
-  setOperationAction(ISD::DEBUG_LABEL, MVT::Other, Expand);
+  // FIXME - use subtarget debug flags
+  if (!TM.getSubtarget<X86Subtarget>().isTargetDarwin())
+    setOperationAction(ISD::DEBUG_LABEL, MVT::Other, Expand);
 
   // VASTART needs to be custom lowered to use the VarArgsFrameIndex
   setOperationAction(ISD::VASTART           , MVT::Other, Custom);


Index: llvm/lib/Target/X86/X86InstrInfo.td
diff -u llvm/lib/Target/X86/X86InstrInfo.td:1.251 llvm/lib/Target/X86/X86InstrInfo.td:1.252
--- llvm/lib/Target/X86/X86InstrInfo.td:1.251	Thu Mar  2 18:19:44 2006
+++ llvm/lib/Target/X86/X86InstrInfo.td	Mon Mar  6 20:02:57 2006
@@ -2353,6 +2353,19 @@
                  [(set R32:$dst, 0)]>;
 
 //===----------------------------------------------------------------------===//
+// DWARF Pseudo Instructions
+//
+
+def DWARF_LOC   : I<0, Pseudo, (ops i32imm:$line, i32imm:$col, i32imm:$file),
+                    "; .loc $file, $line, $col",
+                    [(dwarf_loc (i32 imm:$line), (i32 imm:$col),
+                      (i32 imm:$file))]>;
+
+def DWARF_LABEL : I<0, Pseudo, (ops i32imm:$id),
+                   "\nLdebug_loc${id:debug}:",
+                   [(dwarf_label (i32 imm:$id))]>;
+
+//===----------------------------------------------------------------------===//
 // Non-Instruction Patterns
 //===----------------------------------------------------------------------===//
 


Index: llvm/lib/Target/X86/X86IntelAsmPrinter.cpp
diff -u llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.21 llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.22
--- llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.21	Sun Feb 26 02:28:12 2006
+++ llvm/lib/Target/X86/X86IntelAsmPrinter.cpp	Mon Mar  6 20:02:57 2006
@@ -26,9 +26,16 @@
 /// method to print assembly for each instruction.
 ///
 bool X86IntelAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
+  // Let PassManager know we need debug information and relay
+  // the MachineDebugInfo address on to DwarfWriter.
+  DW.SetDebugInfo(&getAnalysis<MachineDebugInfo>());
+
   SetupMachineFunction(MF);
   O << "\n\n";
 
+  // Emit pre-function debug information.
+  DW.BeginFunction(MF);
+
   // Print out constants referenced by the function
   EmitConstantPool(MF.getConstantPool());
 
@@ -56,6 +63,9 @@
     }
   }
 
+  // Emit post-function debug information.
+  DW.EndFunction(MF);
+
   // We didn't modify anything.
   return false;
 }


Index: llvm/lib/Target/X86/X86IntelAsmPrinter.h
diff -u llvm/lib/Target/X86/X86IntelAsmPrinter.h:1.9 llvm/lib/Target/X86/X86IntelAsmPrinter.h:1.10
--- llvm/lib/Target/X86/X86IntelAsmPrinter.h:1.9	Tue Feb 21 20:26:30 2006
+++ llvm/lib/Target/X86/X86IntelAsmPrinter.h	Mon Mar  6 20:02:57 2006
@@ -23,7 +23,7 @@
 namespace x86 {
 
 struct X86IntelAsmPrinter : public X86SharedAsmPrinter {
-  X86IntelAsmPrinter(std::ostream &O, TargetMachine &TM)
+ X86IntelAsmPrinter(std::ostream &O, TargetMachine &TM)
     : X86SharedAsmPrinter(O, TM) { }
 
   virtual const char *getPassName() const {






More information about the llvm-commits mailing list