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