Patchwork [GCC/ARM] Disable "-fira-hoist-pressure" on Thumb2

login
register
mail settings
Submitter Bin Cheng
Date July 9, 2013, 8:07 a.m.
Message ID <00f001ce7c7b$820e9b20$862bd160$@cheng@arm.com>
Download mbox | patch
Permalink /patch/257662/
State New
Headers show

Comments

Bin Cheng - July 9, 2013, 8:07 a.m.
Hi,
For now the option "-fira-hoist-pressure" is enabled for all targets, but I
monitored performance regression with Os on thumb2 for some cases.
Considering that optimization has small improvement on thumb2 for code size,
here comes this patch disabling it on Thumb2 and modifying the corresponding
test cases.

Tested on arm-none-eabi/M3, is it OK?

Thanks.
bin

2013-04-25  Bin Cheng  <bin.cheng@arm.com>

	* common.opt (flag_ira_hoist_pressure): Initialize to 2.
	* doc/invoke.texi (-fira-hoist-pressure): Disabled by default
	on Thumb2 instruction set.
	* config/arm/arm.c (arm_option_override): Disable option
	-fira-hoist-pressure on Thumb2 by default.

2013-04-25  Bin Cheng  <bin.cheng@arm.com>

	* gcc.dg/hoist-register-pressure-1.c: Add -fira-hoist-pressure
option.
	* gcc.dg/hoist-register-pressure-2.c: Ditto.
	* gcc.dg/hoist-register-pressure-3.c: Ditto.
Bin Cheng - July 24, 2013, 9:56 a.m.
ping.

Thanks.
bin

> -----Original Message-----
> From: gcc-patches-owner@gcc.gnu.org [mailto:gcc-patches-owner@gcc.gnu.org]
On
> Behalf Of Bin Cheng
> Sent: Tuesday, July 09, 2013 4:08 PM
> To: gcc-patches@gcc.gnu.org
> Subject: [PATCH GCC/ARM]Disable "-fira-hoist-pressure" on Thumb2
> 
> Hi,
> For now the option "-fira-hoist-pressure" is enabled for all targets, but
I
> monitored performance regression with Os on thumb2 for some cases.
> Considering that optimization has small improvement on thumb2 for code
size,
> here comes this patch disabling it on Thumb2 and modifying the
corresponding
> test cases.
> 
> Tested on arm-none-eabi/M3, is it OK?
> 
> Thanks.
> bin
> 
> 2013-04-25  Bin Cheng  <bin.cheng@arm.com>
> 
> 	* common.opt (flag_ira_hoist_pressure): Initialize to 2.
> 	* doc/invoke.texi (-fira-hoist-pressure): Disabled by default
> 	on Thumb2 instruction set.
> 	* config/arm/arm.c (arm_option_override): Disable option
> 	-fira-hoist-pressure on Thumb2 by default.
> 
> 2013-04-25  Bin Cheng  <bin.cheng@arm.com>
> 
> 	* gcc.dg/hoist-register-pressure-1.c: Add -fira-hoist-pressure
option.
> 	* gcc.dg/hoist-register-pressure-2.c: Ditto.
> 	* gcc.dg/hoist-register-pressure-3.c: Ditto.

Patch

Index: gcc/common.opt
===================================================================
--- gcc/common.opt	(revision 197029)
+++ gcc/common.opt	(working copy)
@@ -1397,7 +1397,7 @@  EnumValue
 Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
 
 fira-hoist-pressure
-Common Report Var(flag_ira_hoist_pressure) Init(1) Optimization
+Common Report Var(flag_ira_hoist_pressure) Init(2) Optimization
 Use IRA based register pressure calculation
 in RTL hoist optimizations.
 
Index: gcc/config/arm/arm.c
===================================================================
--- gcc/config/arm/arm.c	(revision 197029)
+++ gcc/config/arm/arm.c	(working copy)
@@ -2095,6 +2095,12 @@  arm_option_override (void)
   else
     max_insns_skipped = current_tune->max_insns_skipped;
 
+  if (TARGET_THUMB2 && flag_ira_hoist_pressure == 2)
+    {
+      /* Don't do register pressure directed hoist on Thumb2 by default.  */
+      flag_ira_hoist_pressure = 0;
+    }
+
   /* Hot/Cold partitioning is not currently supported, since we can't
      handle literal pool placement in that case.  */
   if (flag_reorder_blocks_and_partition)
Index: gcc/doc/invoke.texi
===================================================================
--- gcc/doc/invoke.texi	(revision 197029)
+++ gcc/doc/invoke.texi	(working copy)
@@ -7160,7 +7160,7 @@  Use IRA to evaluate register pressure in the code
 decisions to hoist expressions.  This option usually results in smaller
 code, but it can slow the compiler down.
 
-This option is enabled at level @option{-Os} for all targets.
+This option is enabled at level @option{-Os} for most targets.
 
 @item -fira-loop-pressure
 @opindex fira-loop-pressure
Index: gcc/testsuite/gcc.dg/hoist-register-pressure-1.c
===================================================================
--- gcc/testsuite/gcc.dg/hoist-register-pressure-1.c	(revision 197029)
+++ gcc/testsuite/gcc.dg/hoist-register-pressure-1.c	(working copy)
@@ -1,4 +1,4 @@ 
-/* { dg-options "-Os -fdump-rtl-hoist" }  */
+/* { dg-options "-Os -fira-hoist-pressure -fdump-rtl-hoist" }  */
 /* { dg-final { scan-rtl-dump "PRE/HOIST: end of bb .* copying expression" "hoist" { target { nonpic } } } } */
 /* { dg-final { cleanup-rtl-dump "hoist" } } */
 
Index: gcc/testsuite/gcc.dg/hoist-register-pressure-2.c
===================================================================
--- gcc/testsuite/gcc.dg/hoist-register-pressure-2.c	(revision 197029)
+++ gcc/testsuite/gcc.dg/hoist-register-pressure-2.c	(working copy)
@@ -1,4 +1,4 @@ 
-/* { dg-options "-Os -fdump-rtl-hoist" }  */
+/* { dg-options "-Os -fira-hoist-pressure -fdump-rtl-hoist" }  */
 /* { dg-final { scan-rtl-dump "PRE/HOIST: end of bb .* copying expression" "hoist" } } */
 /* { dg-final { cleanup-rtl-dump "hoist" } } */
 
Index: gcc/testsuite/gcc.dg/hoist-register-pressure-3.c
===================================================================
--- gcc/testsuite/gcc.dg/hoist-register-pressure-3.c	(revision 197029)
+++ gcc/testsuite/gcc.dg/hoist-register-pressure-3.c	(working copy)
@@ -1,4 +1,4 @@ 
-/* { dg-options "-Os -fdump-rtl-hoist" }  */
+/* { dg-options "-Os -fira-hoist-pressure -fdump-rtl-hoist" }  */
 /* { dg-final { scan-rtl-dump "PRE/HOIST: end of bb .* copying expression" "hoist" } } */
 /* { dg-final { cleanup-rtl-dump "hoist" } } */