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

Submitted by Bin Cheng on July 9, 2013, 8:07 a.m.

Details

Message ID 00f001ce7c7b$820e9b20$862bd160$@cheng@arm.com
State New
Headers show

Commit Message

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.

Comments

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 hide | download patch | download mbox

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" } } */