[gcc(refs/users/guojiufu/heads/personal-branch)] rs6000: allow cunroll to grow size according to -funroll-loop or -fpeel-loops

Jiu Fu Guo guojiufu@gcc.gnu.org
Wed Jun 10 03:43:31 GMT 2020


https://gcc.gnu.org/g:557a40f599f64e40cc1b20254bf82acc775375f5

commit 557a40f599f64e40cc1b20254bf82acc775375f5
Author: guojiufu <guojiufu@linux.ibm.com>
Date:   Thu May 28 14:10:39 2020 +0800

    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  <guojiufu@linux.ibm.com>
    
            PR target/95018
            * config/rs6000/rs6000.c (rs6000_option_override_internal):
            Override flag_cunroll_grow_size.

Diff:
---
 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


More information about the Gcc-cvs mailing list