[PATCH] D67579: [PGO] Use linkonce_odr linkage for __profd_ variables in comdat groups

Xinliang David Li via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 19 14:13:36 PDT 2019


difference in performance? How about CSPGO?

On Thu, Sep 19, 2019 at 12:25 PM Rong Xu <xur at google.com> wrote:

> 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/43eab3e7/attachment.html>


More information about the llvm-commits mailing list