Hi, While code hoisting generally improves codesize, it can affect performance negatively. Benchmarking shows it doesn't help SPEC and negatively affects embedded benchmarks. Since the impact is relatively small with -O2 and mainly affects -O3, the simplest option is to disable code hoisting for -O3 and higher.
OK for commit? ChangeLog: 2019-11-26 Wilco Dijkstra <wdijk...@arm.com> PR tree-optimization/80155 * common/config/arm/arm-common.c (arm_option_optimization_table): Disable -fcode-hoisting with -O3. -- diff --git a/gcc/common/config/arm/arm-common.c b/gcc/common/config/arm/arm-common.c index b761d3abd670a144a593c4b410b1e7fbdcb52f56..3e11f21b7dd76cc071b645c32a6fdb4a92511279 100644 --- a/gcc/common/config/arm/arm-common.c +++ b/gcc/common/config/arm/arm-common.c @@ -39,6 +39,8 @@ 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_FAST, OPT_fsched_pressure, NULL, 1 }, + /* Disable code hoisting with -O3 or higher. */ + { OPT_LEVELS_3_PLUS, OPT_fcode_hoisting, NULL, 0 }, { OPT_LEVELS_NONE, 0, NULL, 0 } };