The following patch restores the old default limits for loop peeling that were recently changed to 100 and caused a 20% degradation in 454.calculix.

Bootstrap/regtest on powerpc64-linux with no new regressions. Ok for trunk?

-Pat


2012-12-06  Pat Haugen <pthau...@us.ibm.com>
        * config/rs6000/rs6000.c (rs6000_option_override_internal): Set
        default loop peeling limits.


Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c  (revision 194260)
+++ gcc/config/rs6000/rs6000.c  (working copy)
@@ -3120,6 +3120,14 @@ rs6000_option_override_internal (bool gl
                             global_options.x_param_values,
                             global_options_set.x_param_values);
 
+      /* Increase loop peeling limits based on performance analysis. */
+      maybe_set_param_value (PARAM_MAX_PEELED_INSNS, 400,
+                            global_options.x_param_values,
+                            global_options_set.x_param_values);
+      maybe_set_param_value (PARAM_MAX_COMPLETELY_PEELED_INSNS, 400,
+                            global_options.x_param_values,
+                            global_options_set.x_param_values);
+
       /* If using typedef char *va_list, signal that
         __builtin_va_start (&ap, 0) can be optimized to
         ap = __builtin_next_arg (0).  */

Reply via email to