// 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.
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,
}
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) {
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);
}
void CodeGenModule::EmitGlobalFunctionDefinition(const FunctionDecl *D) {
- llvm::GlobalValue *&Entry = GlobalDeclMap[D->getName()];
+ llvm::GlobalValue *&Entry = GlobalDeclMap[D->getIdentifier()];
if (!Entry) {
Entry = EmitForwardFunctionDefinition(D);
} else {
namespace clang {
class ASTContext;
class FunctionDecl;
+ class IdentifierInfo;
class ObjCMethodDecl;
class ObjCImplementationDecl;
class ObjCCategoryImplDecl;
/// 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