On Tue, Sep 29, 2015 at 4:01 PM, Adrian Prantl <apra...@apple.com> wrote:
> > On Sep 29, 2015, at 3:52 PM, David Blaikie <dblai...@gmail.com> wrote: > > > > 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. > > > I thought about both variants, but then decided for myself that I disliked > default-creating the entry just a tiny bit more. (In this particular case > it is really cheap of course). > Fair enough (: > > -- adrian > > > >> >> // 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