CGDebugInfo: Don't reuse a reference into a DenseMap if the DenseMap may

be modified in between. (NFC)

llvm-svn: 248826
This commit is contained in:
Adrian Prantl 2015-09-29 20:44:46 +00:00
parent 4315012769
commit 9e8ea3599e
1 changed files with 4 additions and 4 deletions

View File

@ -1680,9 +1680,9 @@ CGDebugInfo::getOrCreateModuleRef(ExternalASTSource::ASTSourceDescriptor Mod,
// nullptr if the "Module" is a PCH, which is safe because we don't
// support chained PCH debug info, so there can only be a single PCH.
const Module *M = Mod.getModuleOrNull();
auto &ModRef = ModuleCache[M];
if (ModRef)
return cast<llvm::DIModule>(ModRef);
auto ModRef = ModuleCache.find(M);
if (ModRef != ModuleCache.end())
return cast<llvm::DIModule>(ModRef->second);
// Macro definitions that were defined with "-D" on the command line.
SmallString<128> ConfigMacros;
@ -1724,7 +1724,7 @@ CGDebugInfo::getOrCreateModuleRef(ExternalASTSource::ASTSourceDescriptor Mod,
llvm::DIModule *DIMod =
DBuilder.createModule(Parent, Mod.getModuleName(), ConfigMacros,
Mod.getPath(), CGM.getHeaderSearchOpts().Sysroot);
ModRef.reset(DIMod);
ModuleCache[M].reset(DIMod);
return DIMod;
}