From patchwork Thu Jan 5 18:54:58 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Sokolov X-Patchwork-Id: 134536 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 2DE02B6F13 for ; Fri, 6 Jan 2012 05:56:25 +1100 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1326394586; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject: Content-Type:Content-Transfer-Encoding:Mailing-List:Precedence: List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender: Delivered-To; bh=e9MTAXKnKCD4vtvd8WYMBcijmk4=; b=ZEc+hDITc416ixa pvexFcWAq93yrpU4n8CR0lIxqgTSKsDr9NiOgGOsuxZDoO2V8fC4Qikk7xT1xhCN PnIKb7s58EYYxnGu64w3Bp3bt7RsmWFtmvCVl4FQg9WEoBck9oqedO1oPDkMODxg x1suzcsyRCvf4yh2XtPrwrlePu7s= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject:Content-Type:Content-Transfer-Encoding:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=jHWgKPoty/dd/Ypd/ha/Jlk6kvNY4WfKpNsy1HmbTG7Yu6C5YSNhneA6z0rlQo nfLgkIdnVZJ5hrIw3gVWLvHoNtqRHTA8O5t/gTHVpPzL9UFp7xRPIcMboDcTKSj0 sHKKkoh59a/YSGaNueyoDspPg4Cm4dssFs7JwHyAMwvjc=; Received: (qmail 11886 invoked by alias); 5 Jan 2012 18:56:07 -0000 Received: (qmail 11759 invoked by uid 22791); 5 Jan 2012 18:56:05 -0000 X-SWARE-Spam-Status: No, hits=0.4 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, SUBJ_OBFU_PUNCT_FEW, SUBJ_OBFU_PUNCT_MANY X-Spam-Check-By: sourceware.org Received: from contrabass.corbina.net (HELO contrabass.corbina.net) (85.21.78.5) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 05 Jan 2012 18:55:52 +0000 Received: from corbina.ru (violin.corbina.net [195.14.50.30]) by contrabass.corbina.net (Postfix) with ESMTP id 83EF1CA0DE; Thu, 5 Jan 2012 22:55:50 +0400 (MSK) Received: from [89.178.214.217] (account aesok@post.ru HELO [192.168.1.102]) by fe1-mc.corbina.ru (CommuniGate Pro SMTP 5.4.2) with ESMTPA id 62086110; Thu, 05 Jan 2012 22:55:50 +0400 Message-ID: <4F05F202.9090308@post.ru> Date: Thu, 05 Jan 2012 22:54:58 +0400 From: Anatoly Sokolov User-Agent: Mozilla/5.0 (Windows NT 6.0; WOW64; rv:9.0) Gecko/20111222 Thunderbird/9.0.1 MIME-Version: 1.0 To: gcc-patches CC: nickc@redhat.com, rearnsha@arm.com Subject: [ARM] Hookize REGISTER_MOVE_COST and MEMORY_MOVE_COST 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 Hi. This patch removes obsolete PREFERRED_RELOAD_CLASS macro from the ARM back end in the GCC and introduces equivalent TARGET_PREFERRED_RELOAD_CLASS target hook. Bootstrapped and regression tested on arm-unknown-linux-gnueabi. OK to install? * config/arm/arm.h (PREFERRED_RELOAD_CLASS): Remove. * config/arm/arm.c (TARGET_PREFERRED_RELOAD_CLASS): Define. (arm_preferred_reload_class): New function. Index: gcc/config/arm/arm.c =================================================================== --- gcc/config/arm/arm.c (revision 182743) +++ gcc/config/arm/arm.c (working copy) @@ -82,6 +82,7 @@ static int thumb2_legitimate_index_p (enum machine_mode, rtx, int); static int thumb1_base_register_rtx_p (rtx, enum machine_mode, int); static rtx arm_legitimize_address (rtx, rtx, enum machine_mode); +static reg_class_t arm_preferred_reload_class (rtx, reg_class_t); static rtx thumb_legitimize_address (rtx, rtx, enum machine_mode); inline static int thumb1_index_register_rtx_p (rtx, int); static bool arm_legitimate_address_p (enum machine_mode, rtx, bool); @@ -573,6 +574,9 @@ #undef TARGET_LEGITIMATE_ADDRESS_P #define TARGET_LEGITIMATE_ADDRESS_P arm_legitimate_address_p +#undef TARGET_PREFERRED_RELOAD_CLASS +#define TARGET_PREFERRED_RELOAD_CLASS arm_preferred_reload_class + #undef TARGET_INVALID_PARAMETER_TYPE #define TARGET_INVALID_PARAMETER_TYPE arm_invalid_parameter_type @@ -6225,6 +6229,30 @@ return thumb1_legitimate_address_p (mode, x, strict_p); } +/* Worker function for TARGET_PREFERRED_RELOAD_CLASS. + + Given an rtx X being reloaded into a reg required to be + in class CLASS, return the class of reg to actually use. + In general this is just CLASS, but for the Thumb core registers and + immediate constants we prefer a LO_REGS class or a subset. */ + +static reg_class_t +arm_preferred_reload_class (rtx x ATTRIBUTE_UNUSED, reg_class_t rclass) +{ + if (TARGET_32BIT) + return rclass; + else + { + if (rclass == GENERAL_REGS + || rclass == HI_REGS + || rclass == NO_REGS + || rclass == STACK_REG) + return LO_REGS; + else + return rclass; + } +} + /* Build the SYMBOL_REF for __tls_get_addr. */ static GTY(()) rtx tls_get_addr_libfunc; Index: gcc/config/arm/arm.h =================================================================== --- gcc/config/arm/arm.h (revision 182743) +++ gcc/config/arm/arm.h (working copy) @@ -1169,16 +1169,6 @@ #define TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P \ arm_small_register_classes_for_mode_p -/* Given an rtx X being reloaded into a reg required to be - in class CLASS, return the class of reg to actually use. - In general this is just CLASS, but for the Thumb core registers and - immediate constants we prefer a LO_REGS class or a subset. */ -#define PREFERRED_RELOAD_CLASS(X, CLASS) \ - (TARGET_32BIT ? (CLASS) : \ - ((CLASS) == GENERAL_REGS || (CLASS) == HI_REGS \ - || (CLASS) == NO_REGS || (CLASS) == STACK_REG \ - ? LO_REGS : (CLASS))) - /* Must leave BASE_REGS reloads alone */ #define THUMB_SECONDARY_INPUT_RELOAD_CLASS(CLASS, MODE, X) \ ((CLASS) != LO_REGS && (CLASS) != BASE_REGS \