[PATCH] D67579: [PGO] Use linkonce_odr linkage for __profd_ variables in comdat groups
Rong Xu via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 19 12:25:29 PDT 2019
I tested the idea using llvm bootstrap.
Without comdat group, the object file sizes as well as the library archive
sizes are smaller.
But the section sizes in the final binary (like clang-10) increase
significantly.
This is using lld linker. I think we need more investigation here.
Here is the section sizes for clang-10.
=========== with comdat grouping ===============
26 __llvm_prf_cnts 008a9a08 00000000058a29c8 00000000058a29c8 0569f9c8
2**3
CONTENTS, ALLOC, LOAD, DATA
27 __llvm_prf_data 004842c0 000000000614c3d0 000000000614c3d0 05f493d0
2**3
CONTENTS, ALLOC, LOAD, DATA
28 __llvm_prf_vals 00047d28 00000000065d0690 00000000065d0690 063cd690
2**3
CONTENTS, ALLOC, LOAD, DATA
29 __llvm_prf_vnds 00142c60 00000000066183c0 00000000066183c0 064153c0
2**5
CONTENTS, ALLOC, LOAD, DATA
30 __llvm_prf_names 0028f48c 000000000675b020 000000000675b020 06558020
2**0
CONTENTS, ALLOC, LOAD, DATA
31 __llvm_orderfile 00000000 00000000069ea4ac 00000000069ea4ac 067e74ac
2**2
CONTENTS, ALLOC, LOAD, DATA
============= without comdat grouping ===============
26 __llvm_prf_cnts 00a896a8 00000000058a2908 00000000058a2908 0569f908
2**3
CONTENTS, ALLOC, LOAD, DATA
27 __llvm_prf_data 006b4cc0 000000000632bfb0 000000000632bfb0 06128fb0
2**3
CONTENTS, ALLOC, LOAD, DATA
28 __llvm_prf_vals 00061e88 00000000069e0c70 00000000069e0c70 067ddc70
2**3
CONTENTS, ALLOC, LOAD, DATA
29 __llvm_prf_vnds 00142c60 0000000006a42b00 0000000006a42b00 0683fb00
2**5
CONTENTS, ALLOC, LOAD, DATA
30 __llvm_prf_names 0028f48c 0000000006b85760 0000000006b85760 06982760
2**0
CONTENTS, ALLOC, LOAD, DATA
31 __llvm_orderfile 00000000 0000000006e14bec 0000000006e14bec 06c11bec
2**2
CONTENTS, ALLOC, LOAD, DATA
On Wed, Sep 18, 2019 at 9:58 AM Rong Xu <xur at google.com> wrote:
>
>
> On Tue, Sep 17, 2019 at 8:32 PM Xinliang David Li <davidxl at google.com>
> wrote:
>
>>
>>
>> On Tue, Sep 17, 2019 at 4:25 PM Rong Xu <xur at google.com> wrote:
>>
>>> +cc David
>>>
>>> On Tue, Sep 17, 2019 at 3:20 PM Reid Kleckner via Phabricator <
>>> reviews at reviews.llvm.org> wrote:
>>>
>>>> rnk added a comment.
>>>>
>>>> From what I understand, the comdat group isn't necessary, so I disabled
>>>> it on COFF in r372182. Can we simplify ELF to match?
>>>>
>>>
>> Putting prof sections with the function in the same comdat group is
>> probably not needed. There might be some weird interaction with GC and
>> instrumentation binary size. If we don't see issues there, it is ok to
>> simplify ELF to match. Rong can help with some internal testing (instr
>> build size, performance etc) on internal large app with linux.
>>
>> They are not in the same compdat group as the functions -- they have
> their own group.
> I agree that if this affects the data section size (which means duplicates
> counter/variables), we should keep the current way. But I don't double this
> is the case.
> I will do some testing on removing comdat on ELF.
>
> -Rong
>
> David
>>
>>
>>> It's probably OK without setting COMDAT for the variables in ELF as the
>>> linkonce_odr linkage can be used to remove the duplicates.
>>> On the other hand, it's nature to set the COMDAT to sync the
>>> declaration of the function.
>>> I'm CCing david to see what is his thoughts.
>>>
>>> -Rong
>>>
>>>>
>>>>
>>>> Repository:
>>>> rL LLVM
>>>>
>>>> CHANGES SINCE LAST ACTION
>>>> https://reviews.llvm.org/D67579/new/
>>>>
>>>> https://reviews.llvm.org/D67579
>>>>
>>>>
>>>>
>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190919/fac81242/attachment.html>
More information about the llvm-commits
mailing list