Previously, flag_unroll_loops was turned on at -O2 implicitly. This
also turned on cunroll with allowance size increasing, and cunroll
will unroll/peel the loop even the loop is complex like code in PR95018.
With this patch, size growth for cunroll is allowed only for if -funroll-loops
or -fpeel-loops or -O3 is specified explicitly.
gcc/ChangeLog
2020-06-07 Jiufu Guo <guojiufu@linux.ibm.com>
PR target/95018
* config/rs6000/rs6000.c (rs6000_option_override_internal):
Override flag_cunroll_grow_size.
unroll_only_small_loops = 0;
if (!global_options_set.x_flag_rename_registers)
flag_rename_registers = 1;
+ if (!global_options_set.x_flag_cunroll_grow_size)
+ flag_cunroll_grow_size = 1;
}
+ else
+ if (!global_options_set.x_flag_cunroll_grow_size)
+ flag_cunroll_grow_size = flag_peel_loops || optimize >= 3;
/* If using typedef char *va_list, signal that
__builtin_va_start (&ap, 0) can be optimized to