Hello ,

Thanks for your quick response.

Is there any documentation on how I can implement a flag in GCC for my
research purposes?  If no such documentation exists, could you suggest the
appropriate approach in the source code for implementing such a flag?


Thanks & Regards
Soma Pal


On Tue, Dec 16, 2025 at 6:45 PM Jonathan Wakely <[email protected]>
wrote:

>
>
> On Tue, 16 Dec 2025, 23:05 soma pal via Gcc, <[email protected]> wrote:
>
>> Hello ,
>>
>> I am a research scholar and a beginner to GCC, studying the impact of
>> optimization flags across different GCC optimization levels. As part of
>> this work, I am trying to understand whether it is possible to achieve
>> performance equivalent to O0 level  by disabling optimization flags that
>> are mentioned for higher optimizations.
>>
>
> No, it is not.
>
>
>> Specifically, I achieved performance very close to -O2 starting from -O3,
>> and similarly from -O2 to -O1, by cumulatively disabling the optimization
>> flags that differ between these levels. However, I am unable to achieve
>> performance equivalent (or even close) to -O0 when transitioning from -O1,
>> despite disabling all visible optimization flags (using -fno-* flags, and
>> -fdisabling tree/RTL dumps).
>>
>
> This is expected, and well known, and documented:
> https://gcc.gnu.org/wiki/FAQ#optimization-options
>
>
>> In practice, even after disabling all -O1 optimizations, the performance
>> remains significantly better than -O0—roughly halfway between -O0 and -O1.
>> This suggests that -O1 or -O enables certain behaviors or properties that
>> are not exposed through individual optimization flags and also that differ
>> from O0.
>>
>
> Correct.
>
>
>> I would greatly appreciate any guidance on the following:
>>
>>
>>    - Are there optimization-related behaviors at -O1 that are controlled
>>    implicitly (e.g., via internal optimize > 0 gating or other non-flag
>>    mechanisms)?
>>
>
> Yes
>
>    - Is it expected that -O0 behavior cannot be fully reproduced by
>>    disabling flags starting from -O1?
>>
>
> Yes
>
>    - Are there additional factors that significantly differentiate -O1 from
>>    -O0,
>
>
> Yes
>
> and can I redirect those properties while transitioning from O1 to O0?
>>
>
> No
>
>
>    - Can I implement any flag that will redirect to O0 properties even if I
>>    run O1 with all defined disable flags?
>>
>
> No
>
>
>>
>>   Any pointers to documentation, design rationale, or relevant source
>> locations would be extremely helpful.
>>
>> Thank you very much for your time and guidance.
>>
>>
>> Thanks & Regards
>> Soma Pal
>>
>

Reply via email to