Use DenseMap on IdentifierInfo instead of StringMap.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55303 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CodeGenModule.cpp b/lib/CodeGen/CodeGenModule.cpp
index bea92ce..51428c0 100644
--- a/lib/CodeGen/CodeGenModule.cpp
+++ b/lib/CodeGen/CodeGenModule.cpp
@@ -250,7 +250,7 @@
       // Check if we have used a decl with the same name
       // FIXME: The AST should have some sort of aggregate decls or
       // global symbol map.
-      if (!GlobalDeclMap.count(D->getName()))
+      if (!GlobalDeclMap.count(D->getIdentifier()))
         continue;
 
       // Emit the definition.
@@ -362,7 +362,7 @@
   const llvm::Type *PTy = llvm::PointerType::get(Ty, ASTTy.getAddressSpace());
 
   // Lookup the entry, lazily creating it if necessary.
-  llvm::GlobalValue *&Entry = GlobalDeclMap[D->getName()];
+  llvm::GlobalValue *&Entry = GlobalDeclMap[D->getIdentifier()];
   if (!Entry)
     Entry = new llvm::GlobalVariable(Ty, false, 
                                      llvm::GlobalValue::ExternalLinkage,
@@ -396,7 +396,7 @@
   }
   const llvm::Type* InitType = Init->getType();
 
-  llvm::GlobalValue *&Entry = GlobalDeclMap[D->getName()];
+  llvm::GlobalValue *&Entry = GlobalDeclMap[D->getIdentifier()];
   llvm::GlobalVariable *GV = cast_or_null<llvm::GlobalVariable>(Entry);
   
   if (!GV) {
@@ -542,7 +542,7 @@
   const llvm::Type *PTy = llvm::PointerType::get(Ty, ASTTy.getAddressSpace());
   
   // Lookup the entry, lazily creating it if necessary.
-  llvm::GlobalValue *&Entry = GlobalDeclMap[D->getName()];
+  llvm::GlobalValue *&Entry = GlobalDeclMap[D->getIdentifier()];
   if (!Entry)
     Entry = EmitForwardFunctionDefinition(D);
 
@@ -550,7 +550,7 @@
 }
 
 void CodeGenModule::EmitGlobalFunctionDefinition(const FunctionDecl *D) {
-  llvm::GlobalValue *&Entry = GlobalDeclMap[D->getName()];
+  llvm::GlobalValue *&Entry = GlobalDeclMap[D->getIdentifier()];
   if (!Entry) {
     Entry = EmitForwardFunctionDefinition(D);
   } else {
diff --git a/lib/CodeGen/CodeGenModule.h b/lib/CodeGen/CodeGenModule.h
index e77e6eb..7501fd4 100644
--- a/lib/CodeGen/CodeGenModule.h
+++ b/lib/CodeGen/CodeGenModule.h
@@ -31,6 +31,7 @@
 namespace clang {
   class ASTContext;
   class FunctionDecl;
+  class IdentifierInfo;
   class ObjCMethodDecl;
   class ObjCImplementationDecl;
   class ObjCCategoryImplDecl;
@@ -76,7 +77,7 @@
   /// decl, they should be bitcasted on retrieval. Also note that the
   /// globals are keyed on their source name, not the global name
   /// (which may change with attributes such as asm-labels).
-  llvm::StringMap<llvm::GlobalValue*> GlobalDeclMap;
+  llvm::DenseMap<IdentifierInfo*, llvm::GlobalValue*> GlobalDeclMap;
 
   /// List of static global for which code generation is delayed. When
   /// the translation unit has been fully processed we will lazily