From c48c550e1322aebfbe35c7570891619db43bdb9b Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Tue, 13 Jan 2009 21:44:10 +0000 Subject: [PATCH] Use DwarfWriter to record dbg variables. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62185 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/CodeGen/AsmPrinter.h | 8 ++++---- include/llvm/CodeGen/DwarfWriter.h | 4 ++++ lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 9 +++++---- lib/CodeGen/AsmPrinter/DwarfWriter.cpp | 6 ++++++ 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/include/llvm/CodeGen/AsmPrinter.h b/include/llvm/CodeGen/AsmPrinter.h index 9d7ff15ffcb..cdc79516257 100644 --- a/include/llvm/CodeGen/AsmPrinter.h +++ b/include/llvm/CodeGen/AsmPrinter.h @@ -32,7 +32,7 @@ namespace llvm { class GlobalVariable; class MachineConstantPoolEntry; class MachineConstantPoolValue; - class MachineModuleInfo; + class DwarfWriter; class Mangler; class Section; class TargetAsmInfo; @@ -51,10 +51,10 @@ namespace llvm { /// unsigned FunctionNumber; - /// MachineModuleInfo - This is needed because printDeclare() has to insert - /// DebugVariable entries into the dwarf table. This is a short term hack + /// DW -This is needed because printDeclare() has to insert + /// DbgVariable entries into the dwarf table. This is a short term hack /// that ought be fixed soon. - MachineModuleInfo *MMI; + DwarfWriter *DW; // GCMetadataPrinters - The garbage collection metadata printer table. typedef DenseMap gcp_map_type; diff --git a/include/llvm/CodeGen/DwarfWriter.h b/include/llvm/CodeGen/DwarfWriter.h index 24b0f97dfce..19601a4d9c9 100644 --- a/include/llvm/CodeGen/DwarfWriter.h +++ b/include/llvm/CodeGen/DwarfWriter.h @@ -93,6 +93,10 @@ public: /// getRecordSourceLineCount - Count source lines. unsigned getRecordSourceLineCount(); + /// RecordVariable - Indicate the declaration of a local variable. + /// + void RecordVariable(GlobalVariable *GV, unsigned FrameIndex); + /// hasDebugInfo - Return true if debug info intrinsics are seen in /// this module. bool hasDebugInfo(); diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index 47a19dd8935..6627543a856 100644 --- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -20,6 +20,7 @@ #include "llvm/CodeGen/MachineConstantPool.h" #include "llvm/CodeGen/MachineJumpTableInfo.h" #include "llvm/CodeGen/MachineModuleInfo.h" +#include "llvm/CodeGen/DwarfWriter.h" #include "llvm/Support/Mangler.h" #include "llvm/Support/raw_ostream.h" #include "llvm/Target/TargetAsmInfo.h" @@ -162,9 +163,9 @@ bool AsmPrinter::doInitialization(Module &M) { SwitchToDataSection(""); // Reset back to no section. - MMI = getAnalysisToUpdate(); + MachineModuleInfo *MMI = getAnalysisToUpdate(); if (MMI) MMI->AnalyzeModule(M); - + DW = getAnalysisToUpdate(); return false; } @@ -1419,9 +1420,9 @@ void AsmPrinter::printLabel(unsigned Id) const { /// FIXME: It doesn't really print anything rather it inserts a DebugVariable /// entry into dwarf table. void AsmPrinter::printDeclare(const MachineInstr *MI) const { - int FI = MI->getOperand(0).getIndex(); + unsigned FI = MI->getOperand(0).getIndex(); GlobalValue *GV = MI->getOperand(1).getGlobal(); - MMI->RecordVariable(GV, FI); + DW->RecordVariable(cast(GV), FI); } /// PrintAsmOperand - Print the specified operand of MI, an INLINEASM diff --git a/lib/CodeGen/AsmPrinter/DwarfWriter.cpp b/lib/CodeGen/AsmPrinter/DwarfWriter.cpp index d79e6aa7783..675ae983f70 100644 --- a/lib/CodeGen/AsmPrinter/DwarfWriter.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfWriter.cpp @@ -4985,6 +4985,12 @@ unsigned DwarfWriter::getRecordSourceLineCount() { return DD->getRecordSourceLineCount(); } +/// RecordVariable - Indicate the declaration of a local variable. +/// +void DwarfWriter::RecordVariable(GlobalVariable *GV, unsigned FrameIndex) { + DD->RecordVariable(GV, FrameIndex); +} + /// hasDebugInfo - Return true if debug info intrinsics are seen in /// this module. bool DwarfWriter::hasDebugInfo() {