Support "asm" renaming of external symbols.
 - PR3698.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66038 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CodeGenModule.cpp b/lib/CodeGen/CodeGenModule.cpp
index 558c940..33aff25 100644
--- a/lib/CodeGen/CodeGenModule.cpp
+++ b/lib/CodeGen/CodeGenModule.cpp
@@ -605,6 +605,12 @@
 
     if (D->getAttr<WeakAttr>())
       GV->setLinkage(llvm::GlobalValue::ExternalWeakLinkage);
+
+    if (const AsmLabelAttr *ALA = D->getAttr<AsmLabelAttr>()) {
+      // Prefaced with special LLVM marker to indicate that the name
+      // should not be munged.
+      GV->setName("\01" + ALA->getLabel());
+    }  
   }
   
   // Make sure the result is of the correct type.