Fix a bug I introduced in FnStubs generation, switch GVStubs to be a 
densemap instead of StringMap to match FnStubs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81513 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp b/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp
index 2aced08..9f135fb 100644
--- a/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp
+++ b/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp
@@ -70,10 +70,18 @@
     break;
   }
   case X86II::MO_DARWIN_NONLAZY:
-  case X86II::MO_DARWIN_NONLAZY_PIC_BASE:
+  case X86II::MO_DARWIN_NONLAZY_PIC_BASE: {
     Name += "$non_lazy_ptr";
-    GVStubs[Name.str()] = StringRef(Name.data(), Name.size()-13);
-    break;
+    MCSymbol *Sym = OutContext.GetOrCreateSymbol(Name.str());
+    MCSymbol *&StubSym = GVStubs[Sym];
+    if (StubSym == 0) {
+      Name.clear();
+      Mang->getNameWithPrefix(Name, GV, false);
+      StubSym = OutContext.GetOrCreateSymbol(Name.str());
+    }
+    return Sym;
+    
+  }
   case X86II::MO_DARWIN_HIDDEN_NONLAZY_PIC_BASE:
     Name += "$non_lazy_ptr";
     HiddenGVStubs[Name.str()] = StringRef(Name.data(), Name.size()-13);
@@ -81,7 +89,12 @@
   case X86II::MO_DARWIN_STUB: {
     Name += "$stub";
     MCSymbol *Sym = OutContext.GetOrCreateSymbol(Name.str());
-    FnStubs.insert(Sym);
+    MCSymbol *&StubSym = FnStubs[Sym];
+    if (StubSym == 0) {
+      Name.clear();
+      Mang->getNameWithPrefix(Name, GV, false);
+      StubSym = OutContext.GetOrCreateSymbol(Name.str());
+    }
     return Sym;
   }
   // FIXME: These probably should be a modifier on the symbol or something??
@@ -119,7 +132,11 @@
   case X86II::MO_DARWIN_STUB: {
     Name += "$stub";
     MCSymbol *Sym = OutContext.GetOrCreateSymbol(Name.str());
-    FnStubs.insert(Sym);
+    MCSymbol *&StubSym = FnStubs[Sym];
+    if (StubSym == 0) {
+      Name.erase(Name.end()-5, Name.end());
+      StubSym = OutContext.GetOrCreateSymbol(Name.str());
+    }
     return Sym;
   }
   // FIXME: These probably should be a modifier on the symbol or something??