Hi! On Tue, Nov 05, 2019 at 04:33:23PM +0800, Jiufu Guo wrote: > --- gcc/common/config/rs6000/rs6000-common.c (revision 277765) > +++ gcc/common/config/rs6000/rs6000-common.c (working copy) > @@ -35,7 +35,9 @@ static const struct default_options rs6000_option_ > { OPT_LEVELS_ALL, OPT_fsplit_wide_types_early, NULL, 1 }, > /* Enable -fsched-pressure for first pass instruction scheduling. */ > { OPT_LEVELS_1_PLUS, OPT_fsched_pressure, NULL, 1 }, > - { OPT_LEVELS_2_PLUS, OPT_funroll_loops, NULL, 1 }, > + /* Enable -funroll-loops with -munroll-small-loops. */ > + { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_funroll_loops, NULL, 1 }, > + { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_munroll_small_loops, NULL, 1 },
I guess the comment should say what we enable here more than the generic code does. Something like /* Enable -funroll-loops at -O2 already. Also enable -munroll-small-loops. */ > + /* Explicit funroll-loops turns -munroll-small-loops off. > + Implicit funroll-loops does not turn fweb or frename-registers on. */ > + if ((global_options_set.x_flag_unroll_loops && flag_unroll_loops) > + || (global_options_set.x_flag_unroll_all_loops > + && flag_unroll_all_loops)) > { > + if (!global_options_set.x_unroll_small_loops) > + unroll_small_loops = 0; > + } > + else > + { > if (!global_options_set.x_flag_web) > + flag_web = 0; > if (!global_options_set.x_flag_rename_registers) > + flag_rename_registers = 0; > } So unroll-small-loops should better be called unroll-only-small-loops? Why does explicit unroll-loops turns on web and rnreg? Why only explicit? Isn't it good and/or bad in all the same cases, implicit and explicit? > +munroll-small-loops > +Target Undocumented Var(unroll_small_loops) Init(0) Save > +Use conservative small loop unrolling. Undocumented means undocumented, so you don't have a comment string in here. But you can comment it: ; Use conservative small loop unrolling. Segher