Subject: bug#63365: 30.0.50; GCC 13.1 breaks building Emacs with native-compilation

From: Deus Max <[email-masked]>
Date: Sat, 24 Jun 2023 17:41:30 +0300

On 2023-06-24T12:21 Sat, Eli Zaretskii wrote:

>> From: Deus Max <[email-masked]>
>> Cc: Arash Esbati <[email-masked]>,  [email-masked],  [email-masked],
>>   [email-masked],  [email-masked]
>> Date: Sat, 24 Jun 2023 12:17:11 +0300
>>
>> On 2023-06-23T15:15 Fri, Eli Zaretskii wrote:
>>
>> >> From: Arash Esbati <[email-masked]>
>> >> Cc: Andrea Corallo <[email-masked]>,  [email-masked],
>> >>   [email-masked],  [email-masked]
>> >> Date: Fri, 23 Jun 2023 13:41:10 +0200
>> >>
>> >> > Also, why are you using -O3?  That is not recommended when building
>> >> > Emacs.
>> >>
>> >> I wasn't aware of that.  Can you elaborate why -O3 isn't recommended?
>> >
>> > In a nutshell, it bloats the code (due to excessive inlining), with no
>> > real effect on speed.  The inner loops in Emacs are very large, and
>> > thus the techniques used by -O3 to speed up code (loop unrolling etc.)
>> > don't really work.  Moreover, they could make things worse because the
>> > larger loops might no longer fit into the L1 cache of the CPU.
>> >
>> > The -O3 is well suited to speed up relatively simple algorithms with
>> > tight loops.  Emacs has very few of those, in the places that matter
>> > for observable performance.
>>
>> Interesting.
>> This recommendation and the explanation are worth documenting somewhere.
>> Shouldn't a new bug be opened on documenting the GCC -O3 recommendation?
>
> I don't think it's our business to document this.  The default build
> procedure correctly uses -O2.  People who use non-default compilation
> switches should know what they are doing.

Then whose business is it?

The default of course is correct, also it is not intuitive that -O3 is
wrong. People who...should know what they are doing, but a little
explanation goes a long way. It also helps newcomers catch up.