[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