ping
The current pressure scheduler doesn't appear to correctly track register pressure and avoid creating unnecessary spills when register pressure is high. As a result disabling the early scheduler improves integer performance considerably and reduces codesize as a bonus. Since scheduling floating point code is generally beneficial (more registers and higher latencies), only enable the pressure scheduler with -Ofast. On Cortex-A57 this gives a 0.7% performance gain on SPECINT2006 as well as a 0.2% codesize reduction. Bootstrapped on armhf. OK for commit? ChangeLog: 2019-11-06 Wilco Dijkstra <wdijk...@arm.com> * gcc/common/config/arm-common.c (arm_option_optimization_table): Enable fsched_pressure with Ofast only. -- diff --git a/gcc/common/config/arm/arm-common.c b/gcc/common/config/arm/arm-common.c index 41a920f6dc96833e778faa8dbcc19beac483734c..b761d3abd670a144a593c4b410b1e7fbdcb52f56 100644 --- a/gcc/common/config/arm/arm-common.c +++ b/gcc/common/config/arm/arm-common.c @@ -38,7 +38,7 @@ static const struct default_options arm_option_optimization_table[] = { /* Enable section anchors by default at -O1 or higher. */ { OPT_LEVELS_1_PLUS, OPT_fsection_anchors, NULL, 1 }, - { OPT_LEVELS_1_PLUS, OPT_fsched_pressure, NULL, 1 }, + { OPT_LEVELS_FAST, OPT_fsched_pressure, NULL, 1 }, { OPT_LEVELS_NONE, 0, NULL, 0 } };