[llvm-commits] CVS: llvm/lib/CodeGen/MachineDebugInfo.cpp

Jim Laskey jlaskey at apple.com
Tue Mar 7 12:54:00 PST 2006



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






More information about the llvm-commits mailing list