[llvm-commits] [llvm] r62341 - /llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
Devang Patel
dpatel at apple.com
Fri Jan 16 11:28:14 PST 2009
Author: dpatel
Date: Fri Jan 16 13:28:14 2009
New Revision: 62341
URL: http://llvm.org/viewvc/llvm-project?rev=62341&view=rev
Log:
Use lightweight DebugInfo objects directly.
Modified:
llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp?rev=62341&r1=62340&r2=62341&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp Fri Jan 16 13:28:14 2009
@@ -1215,14 +1215,14 @@
///
class DbgVariable {
private:
- DIVariable *Var; // Variable Descriptor.
+ DIVariable Var; // Variable Descriptor.
unsigned FrameIndex; // Variable frame index.
public:
- DbgVariable(DIVariable *V, unsigned I) : Var(V), FrameIndex(I) {}
+ DbgVariable(DIVariable V, unsigned I) : Var(V), FrameIndex(I) {}
// Accessors.
- DIVariable *getVariable() const { return Var; }
+ DIVariable getVariable() const { return Var; }
unsigned getFrameIndex() const { return FrameIndex; }
};
@@ -1564,7 +1564,7 @@
/// AddSourceLine - Add location information to specified debug information
/// entry.
- void AddSourceLine(DIE *Die, DIVariable *V) {
+ void AddSourceLine(DIE *Die, const DIVariable *V) {
unsigned FileID = 0;
unsigned Line = V->getLineNumber();
if (V->getVersion() < DIDescriptor::Version7) {
@@ -1583,7 +1583,7 @@
/// AddSourceLine - Add location information to specified debug information
/// entry.
- void AddSourceLine(DIE *Die, DIGlobal *G) {
+ void AddSourceLine(DIE *Die, const DIGlobal *G) {
unsigned FileID = 0;
unsigned Line = G->getLineNumber();
if (G->getVersion() < DIDescriptor::Version7) {
@@ -1600,18 +1600,18 @@
AddUInt(Die, DW_AT_decl_line, 0, Line);
}
- void AddSourceLine(DIE *Die, DIType *G) {
+ void AddSourceLine(DIE *Die, const DIType *Ty) {
unsigned FileID = 0;
- unsigned Line = G->getLineNumber();
- if (G->getVersion() < DIDescriptor::Version7) {
+ unsigned Line = Ty->getLineNumber();
+ if (Ty->getVersion() < DIDescriptor::Version7) {
// Version6 or earlier. Use compile unit info to get file id.
- CompileUnit *Unit = FindCompileUnit(G->getCompileUnit());
+ CompileUnit *Unit = FindCompileUnit(Ty->getCompileUnit());
FileID = Unit->getID();
} else {
- // Version7 or newer, use filename and directory info from DIGlobal
+ // Version7 or newer, use filename and directory info from DIType
// directly.
- unsigned DID = Directories.idFor(G->getDirectory());
- FileID = SrcFiles.idFor(SrcFileInfo(DID, G->getFilename()));
+ unsigned DID = Directories.idFor(Ty->getDirectory());
+ FileID = SrcFiles.idFor(SrcFileInfo(DID, Ty->getFilename()));
}
AddUInt(Die, DW_AT_decl_file, 0, FileID);
AddUInt(Die, DW_AT_decl_line, 0, Line);
@@ -1979,12 +1979,12 @@
///
DIE *NewDbgScopeVariable(DbgVariable *DV, CompileUnit *Unit) {
// Get the descriptor.
- DIVariable *VD = DV->getVariable();
+ const DIVariable &VD = DV->getVariable();
// Translate tag to proper Dwarf tag. The result variable is dropped for
// now.
unsigned Tag;
- switch (VD->getTag()) {
+ switch (VD.getTag()) {
case DW_TAG_return_variable: return NULL;
case DW_TAG_arg_variable: Tag = DW_TAG_formal_parameter; break;
case DW_TAG_auto_variable: // fall thru
@@ -1993,13 +1993,13 @@
// Define variable debug information entry.
DIE *VariableDie = new DIE(Tag);
- AddString(VariableDie, DW_AT_name, DW_FORM_string, VD->getName());
+ AddString(VariableDie, DW_AT_name, DW_FORM_string, VD.getName());
// Add source line info if available.
- AddSourceLine(VariableDie, VD);
+ AddSourceLine(VariableDie, &VD);
// Add variable type.
- AddType(Unit, VariableDie, VD->getType());
+ AddType(Unit, VariableDie, VD.getType());
// Add variable address.
MachineLocation Location;
@@ -2135,14 +2135,14 @@
for (std::vector<GlobalVariable *>::iterator I = Result.begin(),
E = Result.end(); I != E; ++I) {
- DISubprogram *SPD = new DISubprogram(*I);
+ DISubprogram SPD(*I);
- if (SPD->getName() == MF->getFunction()->getName()) {
+ if (SPD.getName() == MF->getFunction()->getName()) {
// Get the compile unit context.
- CompileUnit *Unit = FindCompileUnit(SPD->getCompileUnit());
+ CompileUnit *Unit = FindCompileUnit(SPD.getCompileUnit());
// Get the subprogram die.
- DIE *SPDie = Unit->getDieMapSlotFor(SPD->getGV());
+ DIE *SPDie = Unit->getDieMapSlotFor(SPD.getGV());
assert(SPDie && "Missing subprogram descriptor");
// Add the function bounds.
@@ -2780,22 +2780,22 @@
getGlobalVariablesUsing(*M, CUName, Result);
for (std::vector<GlobalVariable *>::iterator RI = Result.begin(),
RE = Result.end(); RI != RE; ++RI) {
- DICompileUnit *DIUnit = new DICompileUnit(*RI);
- unsigned ID = RecordSource(DIUnit->getDirectory(),
- DIUnit->getFilename());
+ DICompileUnit DIUnit(*RI);
+ unsigned ID = RecordSource(DIUnit.getDirectory(),
+ DIUnit.getFilename());
DIE *Die = new DIE(DW_TAG_compile_unit);
AddSectionOffset(Die, DW_AT_stmt_list, DW_FORM_data4,
DWLabel("section_line", 0), DWLabel("section_line", 0),
false);
- AddString(Die, DW_AT_producer, DW_FORM_string, DIUnit->getProducer());
- AddUInt(Die, DW_AT_language, DW_FORM_data1, DIUnit->getLanguage());
- AddString(Die, DW_AT_name, DW_FORM_string, DIUnit->getFilename());
- if (!DIUnit->getDirectory().empty())
- AddString(Die, DW_AT_comp_dir, DW_FORM_string, DIUnit->getDirectory());
+ AddString(Die, DW_AT_producer, DW_FORM_string, DIUnit.getProducer());
+ AddUInt(Die, DW_AT_language, DW_FORM_data1, DIUnit.getLanguage());
+ AddString(Die, DW_AT_name, DW_FORM_string, DIUnit.getFilename());
+ if (!DIUnit.getDirectory().empty())
+ AddString(Die, DW_AT_comp_dir, DW_FORM_string, DIUnit.getDirectory());
CompileUnit *Unit = new CompileUnit(ID, Die);
- DW_CUs[DIUnit->getGV()] = Unit;
+ DW_CUs[DIUnit.getGV()] = Unit;
}
}
@@ -2807,32 +2807,32 @@
getGlobalVariablesUsing(*M, GVName, Result);
for (std::vector<GlobalVariable *>::iterator GVI = Result.begin(),
GVE = Result.end(); GVI != GVE; ++GVI) {
- DIGlobalVariable *DI_GV = new DIGlobalVariable(*GVI);
- CompileUnit *DW_Unit = FindCompileUnit(DI_GV->getCompileUnit());
+ DIGlobalVariable DI_GV(*GVI);
+ CompileUnit *DW_Unit = FindCompileUnit(DI_GV.getCompileUnit());
// Check for pre-existence.
- DIE *&Slot = DW_Unit->getDieMapSlotFor(DI_GV->getGV());
+ DIE *&Slot = DW_Unit->getDieMapSlotFor(DI_GV.getGV());
if (Slot) continue;
DIE *VariableDie = new DIE(DW_TAG_variable);
- AddString(VariableDie, DW_AT_name, DW_FORM_string, DI_GV->getName());
- const std::string &LinkageName = DI_GV->getLinkageName();
+ AddString(VariableDie, DW_AT_name, DW_FORM_string, DI_GV.getName());
+ const std::string &LinkageName = DI_GV.getLinkageName();
if (!LinkageName.empty())
AddString(VariableDie, DW_AT_MIPS_linkage_name, DW_FORM_string,
LinkageName);
- AddType(DW_Unit, VariableDie, DI_GV->getType());
+ AddType(DW_Unit, VariableDie, DI_GV.getType());
- if (!DI_GV->isLocalToUnit())
+ if (!DI_GV.isLocalToUnit())
AddUInt(VariableDie, DW_AT_external, DW_FORM_flag, 1);
// Add source line info, if available.
- AddSourceLine(VariableDie, DI_GV);
+ AddSourceLine(VariableDie, &DI_GV);
// Add address.
DIEBlock *Block = new DIEBlock();
AddUInt(Block, 0, DW_FORM_data1, DW_OP_addr);
AddObjectLabel(Block, 0, DW_FORM_udata,
- Asm->getGlobalLinkName(DI_GV->getGV()));
+ Asm->getGlobalLinkName(DI_GV.getGV()));
AddBlock(VariableDie, DW_AT_location, 0, Block);
//Add to map.
@@ -2842,7 +2842,7 @@
DW_Unit->getDie()->AddChild(VariableDie);
//Expose as global. FIXME - need to check external flag.
- DW_Unit->AddGlobal(DI_GV->getName(), VariableDie);
+ DW_Unit->AddGlobal(DI_GV.getName(), VariableDie);
}
}
@@ -2856,32 +2856,32 @@
for (std::vector<GlobalVariable *>::iterator RI = Result.begin(),
RE = Result.end(); RI != RE; ++RI) {
- DISubprogram *SP = new DISubprogram(*RI);
- CompileUnit *Unit = FindCompileUnit(SP->getCompileUnit());
+ DISubprogram SP(*RI);
+ CompileUnit *Unit = FindCompileUnit(SP.getCompileUnit());
// Check for pre-existence.
- DIE *&Slot = Unit->getDieMapSlotFor(SP->getGV());
+ DIE *&Slot = Unit->getDieMapSlotFor(SP.getGV());
if (Slot) continue;
DIE *SubprogramDie = new DIE(DW_TAG_subprogram);
- AddString(SubprogramDie, DW_AT_name, DW_FORM_string, SP->getName());
- const std::string &LinkageName = SP->getLinkageName();
+ AddString(SubprogramDie, DW_AT_name, DW_FORM_string, SP.getName());
+ const std::string &LinkageName = SP.getLinkageName();
if (!LinkageName.empty())
AddString(SubprogramDie, DW_AT_MIPS_linkage_name, DW_FORM_string,
LinkageName);
- DIType SPTy = SP->getType();
+ DIType SPTy = SP.getType();
AddType(Unit, SubprogramDie, SPTy);
- if (!SP->isLocalToUnit())
+ if (!SP.isLocalToUnit())
AddUInt(SubprogramDie, DW_AT_external, DW_FORM_flag, 1);
AddUInt(SubprogramDie, DW_AT_prototyped, DW_FORM_flag, 1);
- AddSourceLine(SubprogramDie, SP);
+ AddSourceLine(SubprogramDie, &SP);
//Add to map.
Slot = SubprogramDie;
//Add to context owner.
Unit->getDie()->AddChild(SubprogramDie);
//Expose as global.
- Unit->AddGlobal(SP->getName(), SubprogramDie);
+ Unit->AddGlobal(SP.getName(), SubprogramDie);
}
}
@@ -3170,8 +3170,7 @@
Scope = getOrCreateScope(DV.getContext().getGV());
}
assert (Scope && "Unable to find variable' scope");
- DIVariable *VD = new DIVariable(GV);
- DbgVariable *DV = new DbgVariable(VD, FrameIndex);
+ DbgVariable *DV = new DbgVariable(DIVariable(GV), FrameIndex);
Scope->AddVariable(DV);
}
};
More information about the llvm-commits
mailing list