switch HiddenGVStubs to be a DenseMap instead of a string map, mirroring FnStubs and GVStubs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81514 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp b/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp
index 9f135fb..3cdb83f 100644
--- a/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp
+++ b/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp
@@ -82,10 +82,17 @@
     return Sym;
     
   }
-  case X86II::MO_DARWIN_HIDDEN_NONLAZY_PIC_BASE:
+  case X86II::MO_DARWIN_HIDDEN_NONLAZY_PIC_BASE: {
     Name += "$non_lazy_ptr";
-    HiddenGVStubs[Name.str()] = StringRef(Name.data(), Name.size()-13);
+    MCSymbol *Sym = OutContext.GetOrCreateSymbol(Name.str());
+    MCSymbol *&StubSym = HiddenGVStubs[Sym];
+    if (StubSym == 0) {
+      Name.clear();
+      Mang->getNameWithPrefix(Name, GV, false);
+      StubSym = OutContext.GetOrCreateSymbol(Name.str());
+    }
     break;
+  }
   case X86II::MO_DARWIN_STUB: {
     Name += "$stub";
     MCSymbol *Sym = OutContext.GetOrCreateSymbol(Name.str());