Re: [PATCH v3 0/3]
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Jul 1, 2021, 10:53 UTC
- Message-ID
- <87mtr6e24q.fsf@evledraar.gmail.com>
- In-Reply-To
- <87y2ardygj.fsf@evledraar.gmail.com>
On Wed, Jun 30 2021, Ævar Arnfjörð Bjarmason wrote:
Show 31 quoted lines
> On Wed, Jun 30 2021, Jeff King wrote:
>
>> On Wed, Jun 30, 2021 at 01:34:07PM -0400, Jeff King wrote:
>>
>>> As an aside, having to have a separate bundle_header_init() and
>>> BUNDLE_HEADER_INIT is annoying (because they both must be kept up to
>>> date with each other), but quite common in our code base. I wonder if
>>> writing:
>>>
>>> void bundle_header_init(struct bundle_header *header)
>>> {
>>> struct bundle_header blank = BUNDLE_HEADER_INIT;
>>> memcpy(header, &blank, sizeof(*header));
>>> }
>>>
>>> would let a smart enough compiler just init "header" in place without
>>> the extra copy (the performance of a single bundle_header almost
>>> certainly doesn't matter, but it might for other types).
>>>
>>> Just musing. ;)
>>
>> For my own curiosity, the answer is yes: https://godbolt.org/z/s54dc6ss9
>>
>> With "gcc -O2" the memcpy goes away and we init "header" directly.
>>
>> If we want to start using this technique widely, I don't think it should
>> be part of your series, though. This probably applies to quite a few
>> data structures, so it would make more sense to have a series which
>> converts several.
>
> That's cool, yeah that would make quite a lot of code better. Thanks!Just for future reference: I submitted a small series to make use of this suggested idiom: https://lore.kernel.org/git/cover-0.5-00000000000-20210701T104855Z-avarab@gmail.com/