[patch][pr19848] Produce explicit comdats in clang

David Majnemer david.majnemer at gmail.com
Thu Jan 8 00:42:26 PST 2015


I don't think we'd want to keep marking C++ entities as weak/linkonce/etc.
in the MSVC ABI if we are splitting the COMDATness out.  I guess we still
sorta need it to talk about the discardability of a symbol...

On Tue, Jan 6, 2015 at 4:39 PM, Rafael EspĂ­ndola <rafael.espindola at gmail.com
> wrote:

> This is the new version of the patch now that the llvm syntax change is in.
>
> The llvm IR until recently had no support for comdats. This was a
> problem when targeting C++ on ELF/COFF as just using weak linkage
> would cause quite a bit of dead bits to remain on the executable
> (unless -ffunction-sections, -fdata-sections and --gc-sections were
> used).
>
> To fix the problem, llvm's codegen will just assume that any weak or
> linkonce that is not in an explicit comdat should be output in one
> with the same name as the global.
>
> This unfortunately breaks cases like pr19848 where a weak symbol is
> not expected to be part of any comdat.
>
> Now that we have explicit comdats in the IR, we can finally get both
> cases right.
>
> This first patch just makes clang give explicit comdats to
> GlobalValues where it is allowed to.
>
> A followup patch to llvm will then stop implicitly producing comdats.
>
> Cheers,
> Rafael
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150108/e718ae77/attachment.html>


More information about the cfe-commits mailing list