rs6000: enable -fweb for small loops unrolling
authorguojiufu <guojiufu@linux.ibm.com>
Mon, 27 Apr 2020 06:08:20 +0000 (14:08 +0800)
committerguojiufu <guojiufu@linux.ibm.com>
Mon, 27 Apr 2020 06:08:20 +0000 (14:08 +0800)
Previously -fweb was disabled if only unroll small loops.  After that
we find there is cases where it could help to rename pseudos and avoid
some anti-dependence which may occur after unroll.

This patch enables -fweb for small loops unrolling.

2020-04-27  Jiufu Guo   <guojiufu@cn.ibm.com>

* common/config/rs6000/rs6000-common.c
(rs6000_option_optimization_table) [OPT_LEVELS_ALL]: Remove turn off
-fweb.
* config/rs6000/rs6000.c (rs6000_option_override_internal): Avoid to
set flag_web.

gcc/ChangeLog
gcc/common/config/rs6000/rs6000-common.c
gcc/config/rs6000/rs6000.c

index 54cc55c5e8d2d95f605ebd3d5454d9da89809fe0..477d2a7163cd39f41787cf21c30461265ba9e710 100644 (file)
@@ -1,3 +1,11 @@
+2020-04-27  Jiufu Guo   <guojiufu@cn.ibm.com>
+
+       * common/config/rs6000/rs6000-common.c
+       (rs6000_option_optimization_table) [OPT_LEVELS_ALL]: Remove turn off
+       -fweb.
+       * config/rs6000/rs6000.c (rs6000_option_override_internal): Avoid to
+       set flag_web.
+
 2020-04-27  Martin Liska  <mliska@suse.cz>
 
        PR lto/94659
index 4f38d5668446ba66a414c18802566ae1a9d1e981..ee37b9dc90b61dcf075d50dea68f648d9e974b99 100644 (file)
@@ -38,9 +38,9 @@ static const struct default_options rs6000_option_optimization_table[] =
        loops at -O2 and above by default.  */
     { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_funroll_loops, NULL, 1 },
     { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_munroll_only_small_loops, NULL, 1 },
-    /* -fweb and -frename-registers are useless in general for rs6000,
-       turn them off.  */
-    { OPT_LEVELS_ALL, OPT_fweb, NULL, 0 },
+
+    /* -frename-registers leads to non-optimal codegen and performance
+       on rs6000, turn it off by default.  */
     { OPT_LEVELS_ALL, OPT_frename_registers, NULL, 0 },
 
     /* Double growth factor to counter reduced min jump length.  */
index aa632ea8f4a0f4a32f0f61b8c8f69981422c076c..2007617cdee3237937fa4a7832a04cc225c11a38 100644 (file)
@@ -4557,7 +4557,7 @@ rs6000_option_override_internal (bool global_init_p)
                           SCHED_PRESSURE_MODEL);
 
       /* Explicit -funroll-loops turns -munroll-only-small-loops off, and
-        turns -fweb and -frename-registers on.  */
+        turns -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))
@@ -4566,8 +4566,6 @@ 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_web)
-           flag_web = 1;
        }
 
       /* If using typedef char *va_list, signal that