Use DwarfWriter to record dbg variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62185 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Devang Patel 2009-01-13 21:44:10 +00:00
parent bb8c5959c8
commit c48c550e13
4 changed files with 19 additions and 8 deletions

View File

@ -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<GCStrategy*,GCMetadataPrinter*> gcp_map_type;

View File

@ -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();

View File

@ -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>();
MachineModuleInfo *MMI = getAnalysisToUpdate<MachineModuleInfo>();
if (MMI) MMI->AnalyzeModule(M);
DW = getAnalysisToUpdate<DwarfWriter>();
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<GlobalVariable>(GV), FI);
}
/// PrintAsmOperand - Print the specified operand of MI, an INLINEASM

View File

@ -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() {