[llvm-branch-commits] [llvm-branch] r76118 - /llvm/branches/Apple/Bender/lib/CodeGen/AsmPrinter/DwarfWriter.cpp

Bill Wendling isanbard at gmail.com
Thu Jul 16 15:26:01 PDT 2009


Author: void
Date: Thu Jul 16 17:26:00 2009
New Revision: 76118

URL: http://llvm.org/viewvc/llvm-project?rev=76118&view=rev
Log:
Merge r75857:

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/branches/Apple/Bender/lib/CodeGen/AsmPrinter/DwarfWriter.cpp

Modified: llvm/branches/Apple/Bender/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Bender/lib/CodeGen/AsmPrinter/DwarfWriter.cpp?rev=76118&r1=76117&r2=76118&view=diff

==============================================================================
--- llvm/branches/Apple/Bender/lib/CodeGen/AsmPrinter/DwarfWriter.cpp (original)
+++ llvm/branches/Apple/Bender/lib/CodeGen/AsmPrinter/DwarfWriter.cpp Thu Jul 16 17:26:00 2009
@@ -1903,8 +1903,14 @@
     AddString(GVDie, DW_AT_name, 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, DW_AT_MIPS_linkage_name, DW_FORM_string, LinkageName);
+    }
     AddType(DW_Unit, GVDie, GV.getType());
     if (!GV.isLocalToUnit())
       AddUInt(GVDie, DW_AT_external, DW_FORM_flag, 1);
@@ -1968,8 +1974,15 @@
     std::string LinkageName;
     SP.getLinkageName(LinkageName);
 
-    if (!LinkageName.empty())
-      AddString(SPDie, DW_AT_MIPS_linkage_name, DW_FORM_string, LinkageName);
+    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);
 
@@ -2974,7 +2987,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-branch-commits mailing list