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 >> >
