StringMap<DIE*>::iterator::first() returns a pointer to the first character of
the key. This will cause it to create a new std::string, which isn't
wanted. Instead, pass back the "const char*". Modify the EmitString() method to
take a "const char*".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68741 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/AsmPrinter/DwarfWriter.cpp b/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
index 5a721ac..21bfbe4 100644
--- a/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
+++ b/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
@@ -2664,13 +2664,13 @@
     Asm->EOL("Compilation Unit Length");
       
     StringMap<DIE*> &Globals = Unit->getGlobals();
-    for (StringMap<DIE*>::iterator
+    for (StringMap<DIE*>::const_iterator
            GI = Globals.begin(), GE = Globals.end(); GI != GE; ++GI) {
-      const std::string &Name = GI->first();
+      const char *Name = GI->getKeyData();
       DIE * Entity = GI->second;
         
       Asm->EmitInt32(Entity->getOffset()); Asm->EOL("DIE offset");
-      Asm->EmitString(Name); Asm->EOL("External Name");
+      Asm->EmitString(Name, strlen(Name)); Asm->EOL("External Name");
     }
       
     Asm->EmitInt32(0); Asm->EOL("End Mark");