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