On Wed, Apr 22, 2020 at 04:17:56PM +0200, 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 },

That is not everything, some spots also compare the value of optimize, e.g.
tree-ssa-loop-ivcanon.c:                                                   || 
optimize >= 3, true);
tree-ssa-loop-ivcanon.c:      ret = tree_unroll_loops_completely (optimize >= 
3, false);
tree-ssa-loop-niter.c:  if (optimize >= 3)
An -O? option is not just a set of suboptions it enables, and there are
other option interactions (e.g. some ftree-* etc. options might be set, but
for whatever reason the corresponding pass isn't enabled, e.g. -Og or -O0
have significantly different parts of pass lists and many passes just aren't
schedule at all in those cases).

        Jakub

Reply via email to