Thanks! I was looking for "optimize" (since that's the flag defined in common.opt). But you can probably guess how many lines will match "optimize".

On 22/04/2020 16:17, Philipp Tomsich wrote:
ptomsich@android:~/riscv/gcc/gcc$ git grep OPT_LEVELS_3
common/common-target.h:  OPT_LEVELS_3_PLUS, /* -O3 and above.  */
common/common-target.h:  OPT_LEVELS_3_PLUS_AND_SIZE, /* -O3 and above and -Os.  
*/
common/config/arc/arc-common.c:#define OPT_LEVELS_3_PLUS_SPEED_ONLY 
OPT_LEVELS_3_PLUS
common/config/arc/arc-common.c:    { OPT_LEVELS_3_PLUS_SPEED_ONLY, 
OPT_msize_level_, NULL, 0 },
common/config/arc/arc-common.c:    { OPT_LEVELS_3_PLUS_SPEED_ONLY, 
OPT_malign_call, NULL, 1 },
common/config/nios2/nios2-common.c:    { OPT_LEVELS_3_PLUS, OPT_mfast_sw_div, 
NULL, 1 },
opts.c:    case OPT_LEVELS_3_PLUS:
opts.c:    case OPT_LEVELS_3_PLUS_AND_SIZE:
opts.c:    { OPT_LEVELS_3_PLUS_AND_SIZE, OPT_finline_functions, NULL, 1 },
opts.c:    { OPT_LEVELS_3_PLUS, OPT_fgcse_after_reload, NULL, 1 },
opts.c:    { OPT_LEVELS_3_PLUS, OPT_fipa_cp_clone, NULL, 1 },
opts.c:    { OPT_LEVELS_3_PLUS, OPT_floop_interchange, NULL, 1 },
opts.c:    { OPT_LEVELS_3_PLUS, OPT_floop_unroll_and_jam, NULL, 1 },
opts.c:    { OPT_LEVELS_3_PLUS, OPT_fpeel_loops, NULL, 1 },
opts.c:    { OPT_LEVELS_3_PLUS, OPT_fpredictive_commoning, NULL, 1 },
opts.c:    { OPT_LEVELS_3_PLUS, OPT_fsplit_loops, NULL, 1 },
opts.c:    { OPT_LEVELS_3_PLUS, OPT_fsplit_paths, NULL, 1 },
opts.c:    { OPT_LEVELS_3_PLUS, OPT_ftree_loop_distribute_patterns, NULL, 1 },
opts.c:    { OPT_LEVELS_3_PLUS, OPT_ftree_loop_distribution, NULL, 1 },
opts.c:    { OPT_LEVELS_3_PLUS, OPT_ftree_loop_vectorize, NULL, 1 },
opts.c:    { OPT_LEVELS_3_PLUS, OPT_ftree_partial_pre, NULL, 1 },
opts.c:    { OPT_LEVELS_3_PLUS, OPT_ftree_slp_vectorize, NULL, 1 },
opts.c:    { OPT_LEVELS_3_PLUS, OPT_funswitch_loops, NULL, 1 },
opts.c:    { OPT_LEVELS_3_PLUS, OPT_fvect_cost_model_, NULL, 
VECT_COST_MODEL_DYNAMIC },
opts.c:    { OPT_LEVELS_3_PLUS, OPT_fversion_loops_for_strides, NULL, 1 },


On 22.04.2020, at 16:01, Erick Ochoa <erick.oc...@theobroma-systems.com> wrote:

Hello,

Does anyone know if the following text from the GCC internals [0] is outdated?

-O3

    Optimize yet more. -O3 turns on all optimizations specified by -O2 and also 
turns on the following optimization flags:

    -fgcse-after-reload
    -fipa-cp-clone
    -floop-interchange
    -floop-unroll-and-jam
    -fpeel-loops
    -fpredictive-commoning
    -fsplit-paths
    -ftree-loop-distribute-patterns
    -ftree-loop-distribution
    -ftree-loop-vectorize
    -ftree-partial-pre
    -ftree-slp-vectorize
    -funswitch-loops
    -fvect-cost-model
    -fversion-loops-for-strides

I ask because I have an optimization pass that interacts poorly with -O3, but 
compiles and runs correctly with -O2.
I'm trying to find which individual (or combination of optimizations) is 
triggering the runtime error I'm debugging.
I tried running -O2 and manually enable all the optimizations turned on by -O3 
(but without specifying -O3) and my pass runs successfully.

So, either:
* -O3 does more than just enable these optimizations, or
* This documentation is outdated and there's something missing.

Does someone have an answer? (And if possible point to some code locations so 
that I can learn where it is.) Thanks!

[0] https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html

Reply via email to