Changes in directory llvm/lib/CodeGen:
MachineDebugInfo.cpp updated: 1.23 -> 1.24 --- Log message: Switch to using a numeric id for anchors. --- Diffs of the changes: (+28 -12) MachineDebugInfo.cpp | 40 ++++++++++++++++++++++++++++------------ 1 files changed, 28 insertions(+), 12 deletions(-) Index: llvm/lib/CodeGen/MachineDebugInfo.cpp diff -u llvm/lib/CodeGen/MachineDebugInfo.cpp:1.23 llvm/lib/CodeGen/MachineDebugInfo.cpp:1.24 --- llvm/lib/CodeGen/MachineDebugInfo.cpp:1.23 Fri Mar 3 09:06:57 2006 +++ llvm/lib/CodeGen/MachineDebugInfo.cpp Tue Mar 7 14:53:47 2006 @@ -53,7 +53,7 @@ std::vector<const Type*> FieldTypes; FieldTypes.push_back(Type::UIntTy); - FieldTypes.push_back(PointerType::get(Type::SByteTy)); + FieldTypes.push_back(Type::UIntTy); // Get the GlobalVariable root. GlobalVariable *UseRoot = M.getGlobalVariable(RootName, @@ -539,11 +539,11 @@ AnchorDesc::AnchorDesc() : DebugInfoDesc(DW_TAG_anchor) -, Name("") +, AnchorTag(0) {} -AnchorDesc::AnchorDesc(const std::string &N) +AnchorDesc::AnchorDesc(AnchoredDesc *D) : DebugInfoDesc(DW_TAG_anchor) -, Name(N) +, AnchorTag(D->getTag()) {} // Implement isa/cast/dyncast. @@ -562,13 +562,26 @@ void AnchorDesc::ApplyToFields(DIVisitor *Visitor) { DebugInfoDesc::ApplyToFields(Visitor); - Visitor->Apply(Name); + Visitor->Apply(AnchorTag); } -/// getDescString - Return a string used to compose global names and labels. -/// +/// getDescString - Return a string used to compose global names and labels. A +/// A global variable name needs to be defined for each debug descriptor that is +/// anchored. NOTE: that each global variable name here also needs to be added +/// to the list of names left external in the internalizer. +/// ExternalNames.insert("llvm.dbg.compile_units"); +/// ExternalNames.insert("llvm.dbg.global_variables"); +/// ExternalNames.insert("llvm.dbg.subprograms"); const char *AnchorDesc::getDescString() const { - return Name.c_str(); + switch (AnchorTag) { + case DW_TAG_compile_unit: return CompileUnitDesc::AnchorString; + case DW_TAG_variable: return GlobalVariableDesc::AnchorString; + case DW_TAG_subprogram: return SubprogramDesc::AnchorString; + default: break; + } + + assert(0 && "Tag does not have a case for anchor string"); + return ""; } /// getTypeString - Return a string used to label this descriptors type. @@ -581,7 +594,7 @@ void AnchorDesc::dump() { std::cerr << getDescString() << " " << "Tag(" << getTag() << "), " - << "Name(" << Name << ")\n"; + << "AnchorTag(" << AnchorTag << ")\n"; } #endif @@ -649,8 +662,9 @@ /// getAnchorString - Return a string used to label this descriptor's anchor. /// +const char *CompileUnitDesc::AnchorString = "llvm.dbg.compile_units"; const char *CompileUnitDesc::getAnchorString() const { - return "llvm.dbg.compile_units"; + return AnchorString; } #ifndef NDEBUG @@ -1014,8 +1028,9 @@ /// getAnchorString - Return a string used to label this descriptor's anchor. /// +const char *GlobalVariableDesc::AnchorString = "llvm.dbg.global_variables"; const char *GlobalVariableDesc::getAnchorString() const { - return "llvm.dbg.global_variables"; + return AnchorString; } #ifndef NDEBUG @@ -1063,8 +1078,9 @@ /// getAnchorString - Return a string used to label this descriptor's anchor. /// +const char *SubprogramDesc::AnchorString = "llvm.dbg.subprograms"; const char *SubprogramDesc::getAnchorString() const { - return "llvm.dbg.subprograms"; + return AnchorString; } #ifndef NDEBUG _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits