[Patch ARM] Turn on sched-pressure by default on the ARM architecture.

Ramana Radhakrishnan ramana.radhakrishnan@linaro.org
Tue Jul 17 09:20:00 GMT 2012


Hi,

After benchmarking on a number of cores and measuring good
improvements across the board on the Cortex-A9 ,  on some cores
(Cortex M) we saw no great improvements but no regressions either,  we
should just turn this on by default for the ARM port as in general it
appears to give us a good win. Theoretically there's no reason why
this will not benefit us by default on single issue machines as it
prevents the first sched pass from having excessive register pressure.

I have turned this on by default for O1_PLUS level of optimization so
that if someone uses -O1 -fschedule-insns they get the benefit of
having sched-pressure on by default.

Applied.

Thanks,
Ramana

2012-07-17  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
	    Ulrich Weigand  <ulrich.weigand@linaro.org>

	* common/config/arm/arm-common.c (arm_option_optimization_table):
	Enable -fsched-pressure by default while optimizing.
	* config/arm/arm.c (arm_option_override): Use the alternate scheduler
	pressure algorithm by default.
-------------- next part --------------
Index: gcc/common/config/arm/arm-common.c
===================================================================
--- gcc/common/config/arm/arm-common.c	(revision 189562)
+++ gcc/common/config/arm/arm-common.c	(working copy)
@@ -35,6 +35,7 @@
     /* Enable section anchors by default at -O1 or higher.  */
     { OPT_LEVELS_1_PLUS, OPT_fsection_anchors, NULL, 1 },
     { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 },
+    { OPT_LEVELS_1_PLUS, OPT_fsched_pressure, NULL, 1 },
     { OPT_LEVELS_NONE, 0, NULL, 0 }
   };
 
Index: gcc/config/arm/arm.c
===================================================================
--- gcc/config/arm/arm.c	(revision 189562)
+++ gcc/config/arm/arm.c	(working copy)
@@ -2009,6 +2009,11 @@
                            global_options.x_param_values,
                            global_options_set.x_param_values);
 
+  /* Use the alternative scheduling-pressure algorithm by default.  */
+  maybe_set_param_value (PARAM_SCHED_PRESSURE_ALGORITHM, 2,
+                         global_options.x_param_values,
+                         global_options_set.x_param_values);
+
   /* Register global variables with the garbage collector.  */
   arm_add_gc_roots ();
 }


More information about the Gcc-patches mailing list