[prev in list] [next in list] [prev in thread] [next in thread]
List: cfe-dev
Subject: Re: [cfe-dev] ThinLTO and removal of hidden visibility code
From: Damjan Marion via cfe-dev <cfe-dev () lists ! llvm ! org>
Date: 2020-10-22 12:01:02
Message-ID: F0D80ACF-9F60-4105-B6D3-70D697413D46 () me ! com
[Download RAW message or body]
Hi Teresa,
Thank you for detailed explanation.
I come to gc-sections solution before, but I was not sure what are the implications \
of using it.
Thanks,
Damjan
> On 21.10.2020., at 17:53, Teresa Johnson <tejohnson@google.com> wrote:
>
> Hi Damjan,
>
> Try building with function/data sections and linker gc enabled. I.e. \
> "-ffunction-sections -fdata-sections -Wl,--gc-sections". If that doesn't help, then \
> please post a test case.
> If those hidden symbols were only referenced within the same translation unit aka \
> module, then there shouldn't be a difference between full and thin LTO (the linker \
> will tell the post-link compilation in both cases that there are no references \
> outside the module and it could then be internalized and removed as long as all \
> references in the module were inlined.
> Assuming there are cross-module references initially:
>
> With full LTO all objects are compiled post link in a monolithic blob, which means \
> that if all references to a hidden symbol are inlined, it knows that there can be \
> no additional references and the symbol can be removed.
> With ThinLTO, each object is still compiled post link independently, while ThinLTO \
> enables cross-module importing and inlining the defining module does not know \
> whether those inlines were successful and therefore whether any cross-module \
> references remain, so it needs to leave the outlined definition in place. If you \
> enable function sections and linker GC, then the linker, when it links together the \
> final native objects produced by the ThinLTO post-link compilations into the final \
> native .so, can remove the symbols that were fully inlined across modules and no \
> longer have any references.
> Teresa
>
> On Mon, Oct 19, 2020 at 6:49 AM Damjan Marion via cfe-dev <cfe-dev@lists.llvm.org> \
> wrote:
> Hi,
>
> I noticed that only when I use -flto=full functions which have hidden visibility \
> are removed from code when I link it into .so file.
>
> Is this expected behaviour? Is there a way to achieve same with —flto=thin?
>
> Thanks
>
> —
> Damjan
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev@lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
>
> --
> Teresa Johnson | Software Engineer | tejohnson@google.com |
_______________________________________________
cfe-dev mailing list
cfe-dev@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic