[llvm-commits] [llvm] r75875 - /llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp

Devang Patel dpatel at apple.com
Wed Jul 15 18:01:22 PDT 2009


Author: dpatel
Date: Wed Jul 15 20:01:22 2009
New Revision: 75875

URL: http://llvm.org/viewvc/llvm-project?rev=75875&view=rev
Log:
Skip special LLVM prefix '1' while emitting linknage name.
This prefix is used by LLVM to inform the asm printer to not emit usual global symbol prefix before the symbol name.

Modified:
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=75875&r1=75874&r2=75875&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Wed Jul 15 20:01:22 2009
@@ -785,10 +785,16 @@
   AddString(GVDie, dwarf::DW_AT_name, dwarf::DW_FORM_string, Name);
   std::string LinkageName;
   GV.getLinkageName(LinkageName);
-  if (!LinkageName.empty())
+  if (!LinkageName.empty()) {
+    // Skip special LLVM prefix that is used to inform the asm printer to not emit
+    // usual symbol prefix before the symbol name. This happens for Objective-C
+    // symbol names and symbol whose name is replaced using GCC's __asm__ attribute.
+    if (LinkageName[0] == 1)
+      LinkageName = &LinkageName[1];
     AddString(GVDie, dwarf::DW_AT_MIPS_linkage_name, dwarf::DW_FORM_string,
               LinkageName);
-  AddType(DW_Unit, GVDie, GV.getType());
+  }
+    AddType(DW_Unit, GVDie, GV.getType());
   if (!GV.isLocalToUnit())
     AddUInt(GVDie, dwarf::DW_AT_external, dwarf::DW_FORM_flag, 1);
   AddSourceLine(GVDie, &GV);
@@ -855,9 +861,15 @@
 
   std::string LinkageName;
   SP.getLinkageName(LinkageName);
-  if (!LinkageName.empty())
+  if (!LinkageName.empty()) {
+    // Skip special LLVM prefix that is used to inform the asm printer to not emit
+    // usual symbol prefix before the symbol name. This happens for Objective-C
+    // symbol names and symbol whose name is replaced using GCC's __asm__ attribute.
+    if (LinkageName[0] == 1)
+      LinkageName = &LinkageName[1];
     AddString(SPDie, dwarf::DW_AT_MIPS_linkage_name, dwarf::DW_FORM_string,
               LinkageName);
+  }
   AddSourceLine(SPDie, &SP);
 
   DICompositeType SPTy = SP.getType();
@@ -2455,7 +2467,16 @@
     SP.getLinkageName(LName);
     SP.getName(Name);
 
-    Asm->EmitString(LName.empty() ? Name : LName);
+    if (LName.empty())
+      Asm->EmitString(Name);
+    else {
+      // Skip special LLVM prefix that is used to inform the asm printer to not emit
+      // usual symbol prefix before the symbol name. This happens for Objective-C
+      // symbol names and symbol whose name is replaced using GCC's __asm__ attribute.
+      if (LName[0] == 1)
+        LName = &LName[1];
+      Asm->EmitString(LName);
+    }
     Asm->EOL("MIPS linkage name");
 
     Asm->EmitString(Name); Asm->EOL("Function name");





More information about the llvm-commits mailing list