rs6000: allow cunroll to grow size according to -funroll-loop or -fpeel-loops
authorguojiufu <guojiufu@linux.ibm.com>
Thu, 28 May 2020 06:10:39 +0000 (14:10 +0800)
committerguojiufu <guojiufu@linux.ibm.com>
Sun, 7 Jun 2020 09:35:01 +0000 (17:35 +0800)
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.

gcc/config/rs6000/rs6000.c

index 42d517c1f65c1c78b2063b1b9c760cd1f0bb7625..ff09e9378ef4a3829738899481dc834a34df399d 100644 (file)
@@ -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