On Tue, Sep 29, 2015 at 1:44 PM, Adrian Prantl via cfe-commits < cfe-commits@lists.llvm.org> wrote:
> Author: adrian > Date: Tue Sep 29 15:44:46 2015 > New Revision: 248826 > > URL: http://llvm.org/viewvc/llvm-project?rev=248826&view=rev > Log: > CGDebugInfo: Don't reuse a reference into a DenseMap if the DenseMap may > be modified in between. (NFC) > > Modified: > cfe/trunk/lib/CodeGen/CGDebugInfo.cpp > > Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=248826&r1=248825&r2=248826&view=diff > > ============================================================================== > --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Tue Sep 29 15:44:46 2015 > @@ -1680,9 +1680,9 @@ CGDebugInfo::getOrCreateModuleRef(Extern > // 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); > Maybe change this to: if (const auto *Mod = ModuleCache[M]) return cast<llvm::DIModule>(Mod); Or similar, to reduce variable scope, since "ModRef" isn't needed/used after this block. It does cause the entry to be created earlier, but that shouldn't make a difference in any real sense - but I could see a preference either way, if you prefer it the way it is, that'd be cool too. > > // Macro definitions that were defined with "-D" on the command line. > SmallString<128> ConfigMacros; > @@ -1724,7 +1724,7 @@ CGDebugInfo::getOrCreateModuleRef(Extern > llvm::DIModule *DIMod = > DBuilder.createModule(Parent, Mod.getModuleName(), ConfigMacros, > Mod.getPath(), > CGM.getHeaderSearchOpts().Sysroot); > - ModRef.reset(DIMod); > + ModuleCache[M].reset(DIMod); > return DIMod; > } > > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits