Difference between two optimization settings

Thomas Heinz thomasheinz@gmx.net
Sat Jun 28 12:45:00 GMT 2008


Hi

What is the difference between

-O0

and

-O1 -fno-defer-pop -fno-merge-constants -fno-thread-jumps -fno-loop-optimize
    -fno-if-conversion -fno-if-conversion2 -fno-delayed-branch
    -fno-guess-branch-probability -fno-cprop-registers -fno-omit-frame-pointer


My gcc 3.4.6 man page says:

-O
-O1 Optimize.  Optimizing compilation takes somewhat more time, and a lot
               more memory for a large function.

               With -O, the compiler tries to reduce code size and
               execution time, without performing any optimizations that
               take a great deal of compilation time.

              -O turns on the following optimization flags: -fdefer-pop
              -fmerge-constants -fthread-jumps -floop-optimize
              -fif-conversion -fif-conversion2 -fdelayed-branch
              -fguess-branch-probability -fcprop-registers

              -O also turns on -fomit-frame-pointer on machines where doing
              so does not interfere with debugging.


One thing I noticed is that the second optimization setting performs 
constant propagation and constant folding.

If the answer to my question depends upon the gcc version (assuming gcc >= 
3.4), then I'd be most interested in 3.4 or more specific 3.4.5.
The source language is C.

Thanks a lot for your support.


Cheers,

Thomas



More information about the Gcc-help mailing list