From 557a40f599f64e40cc1b20254bf82acc775375f5 Mon Sep 17 00:00:00 2001 From: guojiufu Date: Thu, 28 May 2020 14:10:39 +0800 Subject: [PATCH] rs6000: allow cunroll to grow size according to -funroll-loop or -fpeel-loops 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 PR target/95018 * config/rs6000/rs6000.c (rs6000_option_override_internal): Override flag_cunroll_grow_size. --- gcc/config/rs6000/rs6000.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 42d517c1f65..ff09e9378ef 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -4567,7 +4567,12 @@ rs6000_option_override_internal (bool global_init_p) 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 -- 2.30.2