r248826 - CGDebugInfo: Don't reuse a reference into a DenseMap if the DenseMap may
Adrian Prantl via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 29 16:01:07 PDT 2015
> On Sep 29, 2015, at 3:52 PM, David Blaikie <dblaikie at gmail.com> wrote:
>
>
>
> On Tue, Sep 29, 2015 at 1:44 PM, Adrian Prantl via cfe-commits <cfe-commits at lists.llvm.org <mailto:cfe-commits at 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 <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 <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).
-- 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 at lists.llvm.org <mailto:cfe-commits at lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150929/b615cc77/attachment.html>
More information about the cfe-commits
mailing list