From patchwork Tue Jul 9 08:07:54 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Cheng X-Patchwork-Id: 257662 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "localhost", Issuer "www.qmailtoaster.com" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 5D01A2C0099 for ; Tue, 9 Jul 2013 18:14:17 +1000 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:message-id:mime-version:content-type; q=dns; s= default; b=xxNsrckfpl7kpxB+BIq66jOYlzJM3dPg0OKH37Dd7hjCS11hshUpY 1kZdoGAnMFPJJqAC2hzM7QzYUibxaHMHhw9HZigcSzpmxxv52OR0jbJLKwcoa9uw KGOwPKzv1Y50lAZLqTyOSCbJXTy4oTUi9E4M2sTSXn9NlR7UhAei0I= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:message-id:mime-version:content-type; s= default; bh=chaJG6wxB+6VQNzyDCkQTAHju1g=; b=Sozfg3uMCsqhKaEqhU6Z sqVSH4HS8tSh5IjkhEWPkH/yEq/bew+1kPVlGB8tyVy0jnk0z1HPfDnDJPqdB4Qd HvpbCt3ivnBlpieZY+O60jSZVmVR3UD9UwosoNdxwHyIHQyS9C66Lg5fQC+x9I1v lhCqORc35RyGNkfDBEkQMg4= Received: (qmail 24311 invoked by alias); 9 Jul 2013 08:14:11 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 24301 invoked by uid 89); 9 Jul 2013 08:14:10 -0000 X-Spam-SWARE-Status: No, score=-1.0 required=5.0 tests=AWL, BAYES_05, MSGID_MULTIPLE_AT, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=no version=3.3.1 Received: from service87.mimecast.com (HELO service87.mimecast.com) (91.220.42.44) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Tue, 09 Jul 2013 08:14:09 +0000 Received: from cam-owa2.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.21]) by service87.mimecast.com; Tue, 09 Jul 2013 09:14:07 +0100 Received: from Binsh02 ([10.1.255.212]) by cam-owa2.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.3959); Tue, 9 Jul 2013 09:14:05 +0100 From: "Bin Cheng" To: Subject: [PATCH GCC/ARM]Disable "-fira-hoist-pressure" on Thumb2 Date: Tue, 9 Jul 2013 16:07:54 +0800 Message-ID: <00f001ce7c7b$820e9b20$862bd160$@cheng@arm.com> MIME-Version: 1.0 X-MC-Unique: 113070909140700201 X-Virus-Found: No 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 * 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 * 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. 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" } } */