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());