From patchwork Wed Dec 14 11:44:23 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ramana Radhakrishnan X-Patchwork-Id: 131355 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]) by ozlabs.org (Postfix) with SMTP id 8097C1007D5 for ; Wed, 14 Dec 2011 22:44:40 +1100 (EST) Received: (qmail 12486 invoked by alias); 14 Dec 2011 11:44:37 -0000 Received: (qmail 12474 invoked by uid 22791); 14 Dec 2011 11:44:36 -0000 X-SWARE-Spam-Status: No, hits=-2.2 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from mail-gx0-f175.google.com (HELO mail-gx0-f175.google.com) (209.85.161.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 14 Dec 2011 11:44:24 +0000 Received: by ggnh1 with SMTP id h1so672821ggn.20 for ; Wed, 14 Dec 2011 03:44:23 -0800 (PST) MIME-Version: 1.0 Received: by 10.182.193.41 with SMTP id hl9mr821170obc.44.1323863063391; Wed, 14 Dec 2011 03:44:23 -0800 (PST) Received: by 10.182.235.106 with HTTP; Wed, 14 Dec 2011 03:44:23 -0800 (PST) In-Reply-To: References: Date: Wed, 14 Dec 2011 11:44:23 +0000 Message-ID: Subject: Re: [Patch ARM] Call arm_legitimize_reload_address for TARGET_32BIT. From: Ramana Radhakrishnan To: gcc-patches Cc: Richard Earnshaw , Chung-Lin Tang , Patch Tracking X-IsSubscribed: yes 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 And this time with the patch . 2011-12-14 Ramana Radhakrishnan * config/arm/arm.h (LEGITIMIZE_RELOAD_ADDRESS): Call arm_legitimize_reload_address for Thumb2 as well. Adjust call to thumb_legitimize_reload_address. * config/arm/arm-protos.h (thumb1_legitimize_reload_address): Renamed from thumb_legitimize_reload_address. diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h index 296550a..1bbf855 100644 --- a/gcc/config/arm/arm-protos.h +++ b/gcc/config/arm/arm-protos.h @@ -59,7 +59,7 @@ extern int arm_legitimate_address_outer_p (enum machine_mode, rtx, RTX_CODE, int extern int thumb_legitimate_offset_p (enum machine_mode, HOST_WIDE_INT); extern bool arm_legitimize_reload_address (rtx *, enum machine_mode, int, int, int); -extern rtx thumb_legitimize_reload_address (rtx *, enum machine_mode, int, int, +extern rtx thumb1_legitimize_reload_address (rtx *, enum machine_mode, int, int, int); extern int thumb1_legitimate_address_p (enum machine_mode, rtx, int); extern int arm_const_double_rtx (rtx); diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 65b4e9d..8f21495 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -6789,7 +6789,7 @@ arm_legitimize_reload_address (rtx *p, } rtx -thumb_legitimize_reload_address (rtx *x_p, +thumb1_legitimize_reload_address (rtx *x_p, enum machine_mode mode, int opnum, int type, int ind_levels ATTRIBUTE_UNUSED) diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index 8a9ed1f..3cfe3e6 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -1237,7 +1237,7 @@ enum reg_class operand. If we find one, push the reload and jump to WIN. This macro is used in only one place: `find_reloads_address' in reload.c. - For the ARM, we wish to handle large displacements off a base + For ARM and Thumb2, we wish to handle large displacements off a base register by splitting the addend across a MOV and the mem insn. This can cut the number of reloads needed. */ #define ARM_LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE, IND, WIN) \ @@ -1256,10 +1256,9 @@ enum reg_class /* We could probably achieve better results by defining PROMOTE_MODE to help cope with the variances between the Thumb's signed and unsigned byte and halfword load instructions. */ -/* ??? This should be safe for thumb2, but we may be able to do better. */ -#define THUMB_LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE, IND_L, WIN) \ +#define THUMB1_LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE, IND_L, WIN) \ do { \ - rtx new_x = thumb_legitimize_reload_address (&X, MODE, OPNUM, TYPE, IND_L); \ + rtx new_x = thumb1_legitimize_reload_address (&X, MODE, OPNUM, TYPE, IND_L); \ if (new_x) \ { \ X = new_x; \ @@ -1268,10 +1267,10 @@ do { \ } while (0) #define LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE, IND_LEVELS, WIN) \ - if (TARGET_ARM) \ + if (TARGET_32BIT) \ ARM_LEGITIMIZE_RELOAD_ADDRESS (X, MODE, OPNUM, TYPE, IND_LEVELS, WIN); \ else \ - THUMB_LEGITIMIZE_RELOAD_ADDRESS (X, MODE, OPNUM, TYPE, IND_LEVELS, WIN) + THUMB1_LEGITIMIZE_RELOAD_ADDRESS (X, MODE, OPNUM, TYPE, IND_LEVELS, WIN) /* Return the maximum number of consecutive registers needed to represent mode MODE in a register of class CLASS.