https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84327
--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> --- I think you misunderstand. Listing all the individual -fxxx options without -O1 results in NO OPTIMIZATION. The difference you see is due to all the passes enabled by -O1, not by the ones without flags. As I wrote on stackoverflow: If you don't use one of the -O1, -O2, -O3, -Ofast, or -Og optimization options (and not -O0) then no optimization happens at all, so adjusting which optimization passes are active doesn't do anything. To find which optimization pass makes the difference you can turn on -O1 and then disable individual optimization passes until you find the one that makes a difference. i.e. instead of gcc -fxxx -fyyy -fzzz ... use gcc -O1 -fno-xxx -fno-yyy -fno-zzz