From patchwork Fri Oct 15 16:14:08 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Sokolov X-Patchwork-Id: 67979 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 CD052B70E4 for ; Sat, 16 Oct 2010 03:14:20 +1100 (EST) Received: (qmail 11530 invoked by alias); 15 Oct 2010 16:14:15 -0000 Received: (qmail 11516 invoked by uid 22791); 15 Oct 2010 16:14:10 -0000 X-SWARE-Spam-Status: No, hits=2.3 required=5.0 tests=AWL, BAYES_50, KAM_THEBAT, RCVD_IN_DNSWL_NONE, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from contrabass.post.ru (HELO contrabass.post.ru) (85.21.78.5) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 15 Oct 2010 16:14:03 +0000 Received: from corbina.ru (mail.post.ru [195.14.50.16]) by contrabass.post.ru (Postfix) with ESMTP id E3354E1D9 for ; Fri, 15 Oct 2010 20:13:59 +0400 (MSD) Received: from [95.26.103.123] (account aesok@post.ru HELO Vista.corbina.ru) by corbina.ru (CommuniGate Pro SMTP 5.1.14) with ESMTPA id 266900594 for gcc-patches@gcc.gnu.org; Fri, 15 Oct 2010 20:13:59 +0400 Date: Fri, 15 Oct 2010 20:14:08 +0400 From: Anatoly Sokolov Message-ID: <12810109427.20101015201408@post.ru> To: gcc-patches@gcc.gnu.org Subject: [PATCH] Remove default implementation of the PREFERRED_RELOAD_CLASS macro from back ends MIME-Version: 1.0 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 remove default implementation of the PREFERRED_RELOAD_CLASS macro from back ends. Bootstrapped and regression tested onhppa2.0-unknown-linux-gnu. OK to install? * config/avr/avr.h (PREFERRED_RELOAD_CLASS): Remove. * config/avr/avr-protos.h (preferred_reload_class): Remove. * config/avr/avr.c (preferred_reload_class): Remove. * config/pa/pa.h (PREFERRED_RELOAD_CLASS): Remove. * config/pa/pa.c (emit_move_sequence): Update comment * config/arc/arc.h (PREFERRED_RELOAD_CLASS): Remove. * config/crx/crx.h (PREFERRED_RELOAD_CLASS): Remove. * config/fr30/fr30.h (PREFERRED_RELOAD_CLASS): Remove. * config/frv/frv.h (PREFERRED_RELOAD_CLASS): Remove. * config/h8300/h8300.h (PREFERRED_RELOAD_CLASS): Remove. * config/lm32/lm32.h (PREFERRED_RELOAD_CLASS): Remove. * config/m32r/m32r.h (PREFERRED_RELOAD_CLASS): Remove. * config/moxie/moxie.h (PREFERRED_RELOAD_CLASS): Remove. * config/picochip/picochip.h (PREFERRED_RELOAD_CLASS): Remove. * config/rx/rx.h (PREFERRED_RELOAD_CLASS): Remove. * config/spu/spu.h (PREFERRED_RELOAD_CLASS): Remove. * config/v850/v850.h (PREFERRED_RELOAD_CLASS): Remove. * config/vax/vax.h (PREFERRED_RELOAD_CLASS): Remove. Anatoly. Index: gcc/config/frv/frv.h =================================================================== --- gcc/config/frv/frv.h (revision 165326) +++ gcc/config/frv/frv.h (working copy) @@ -1201,26 +1201,6 @@ ? GPR_P (NUM) \ : (reg_renumber [NUM] >= 0 && GPR_P (reg_renumber [NUM]))) -/* A C expression that places additional restrictions on the register class to - use when it is necessary to copy value X into a register in class CLASS. - The value is a register class; perhaps CLASS, or perhaps another, smaller - class. On many machines, the following definition is safe: - - #define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS - - Sometimes returning a more restrictive class makes better code. For - example, on the 68000, when X is an integer constant that is in range for a - `moveq' instruction, the value of this macro is always `DATA_REGS' as long - as CLASS includes the data registers. Requiring a data register guarantees - that a `moveq' will be used. - - If X is a `const_double', by returning `NO_REGS' you can force X into a - memory constant. This is useful on certain machines where immediate - floating values cannot be loaded into certain kinds of registers. - - This declaration must be present. */ -#define PREFERRED_RELOAD_CLASS(X, CLASS) CLASS - #define SECONDARY_INPUT_RELOAD_CLASS(CLASS, MODE, X) \ frv_secondary_reload_class (CLASS, MODE, X) Index: gcc/config/spu/spu.h =================================================================== --- gcc/config/spu/spu.h (revision 165326) +++ gcc/config/spu/spu.h (working copy) @@ -225,8 +225,6 @@ #define INT_REG_OK_FOR_BASE_P(X,STRICT) \ ((!(STRICT) || REGNO_OK_FOR_BASE_P (REGNO (X)))) -#define PREFERRED_RELOAD_CLASS(X,CLASS) (CLASS) - #define CLASS_MAX_NREGS(CLASS, MODE) \ ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) Index: gcc/config/m32r/m32r.h =================================================================== --- gcc/config/m32r/m32r.h (revision 165326) +++ gcc/config/m32r/m32r.h (working copy) @@ -653,12 +653,6 @@ #define REGNO_OK_FOR_INDEX_P(REGNO) REGNO_OK_FOR_BASE_P(REGNO) -/* 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 on some machines - in some cases it is preferable to use a more restrictive class. */ -#define PREFERRED_RELOAD_CLASS(X,CLASS) (CLASS) - /* Return the maximum number of consecutive registers needed to represent mode MODE in a register of class CLASS. */ #define CLASS_MAX_NREGS(CLASS, MODE) \ Index: gcc/config/rx/rx.h =================================================================== --- gcc/config/rx/rx.h (revision 165326) +++ gcc/config/rx/rx.h (working copy) @@ -270,8 +270,6 @@ { 7, 10, 11, 12, 13, 14, 4, 3, 2, 1, 9, 8, 6, 5, 15 \ } -#define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS - #define REGNO_IN_RANGE(REGNO, MIN, MAX) \ (IN_RANGE ((REGNO), (MIN), (MAX)) \ || (reg_renumber != NULL \ Index: gcc/config/avr/avr-protos.h =================================================================== --- gcc/config/avr/avr-protos.h (revision 165326) +++ gcc/config/avr/avr-protos.h (working copy) @@ -83,7 +83,6 @@ extern void avr_output_addr_vec_elt (FILE *stream, int value); extern const char *avr_out_sbxx_branch (rtx insn, rtx operands[]); -extern enum reg_class preferred_reload_class (rtx x, enum reg_class rclass); extern int extra_constraint_Q (rtx x); extern int adjust_insn_length (rtx insn, int len); extern rtx avr_libcall_value (enum machine_mode mode); Index: gcc/config/avr/avr.c =================================================================== --- gcc/config/avr/avr.c (revision 165326) +++ gcc/config/avr/avr.c (working copy) @@ -5840,16 +5840,6 @@ return gen_rtx_REG (BLKmode, RET_REGISTER + 2 - offs); } -/* Places additional restrictions on the register class to - use when it is necessary to copy value X into a register - in class CLASS. */ - -enum reg_class -preferred_reload_class (rtx x ATTRIBUTE_UNUSED, enum reg_class rclass) -{ - return rclass; -} - int test_hard_reg_class (enum reg_class rclass, rtx x) { Index: gcc/config/avr/avr.h =================================================================== --- gcc/config/avr/avr.h (revision 165326) +++ gcc/config/avr/avr.h (working copy) @@ -329,8 +329,6 @@ #define REGNO_OK_FOR_INDEX_P(NUM) 0 -#define PREFERRED_RELOAD_CLASS(X, CLASS) preferred_reload_class(X,CLASS) - #define TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P hook_bool_mode_true #define CLASS_MAX_NREGS(CLASS, MODE) class_max_nregs (CLASS, MODE) Index: gcc/config/crx/crx.h =================================================================== --- gcc/config/crx/crx.h (revision 165326) +++ gcc/config/crx/crx.h (working copy) @@ -229,8 +229,6 @@ #define REGNO_OK_FOR_INDEX_P(REGNO) REGNO_OK_FOR_BASE_P(REGNO) -#define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS - #define SECONDARY_RELOAD_CLASS(CLASS, MODE, X) \ crx_secondary_reload_class (CLASS, MODE, X) Index: gcc/config/fr30/fr30.h =================================================================== --- gcc/config/fr30/fr30.h (revision 165326) +++ gcc/config/fr30/fr30.h (working copy) @@ -384,24 +384,6 @@ will reload one or both registers only if neither labeling works. */ #define REGNO_OK_FOR_INDEX_P(NUM) 1 -/* A C expression that places additional restrictions on the register class to - use when it is necessary to copy value X into a register in class CLASS. - The value is a register class; perhaps CLASS, or perhaps another, smaller - class. On many machines, the following definition is safe: - - #define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS - - Sometimes returning a more restrictive class makes better code. For - example, on the 68000, when X is an integer constant that is in range for a - `moveq' instruction, the value of this macro is always `DATA_REGS' as long - as CLASS includes the data registers. Requiring a data register guarantees - that a `moveq' will be used. - - If X is a `const_double', by returning `NO_REGS' you can force X into a - memory constant. This is useful on certain machines where immediate - floating values cannot be loaded into certain kinds of registers. */ -#define PREFERRED_RELOAD_CLASS(X, CLASS) CLASS - /* A C expression for the maximum number of consecutive registers of class CLASS needed to hold a value of mode MODE. Index: gcc/config/lm32/lm32.h =================================================================== --- gcc/config/lm32/lm32.h (revision 165326) +++ gcc/config/lm32/lm32.h (working copy) @@ -227,8 +227,6 @@ #define REGNO_OK_FOR_INDEX_P(REGNO) 0 -#define PREFERRED_RELOAD_CLASS(X,CLASS) (CLASS) - /*----------------------------------------*/ /* Stack Layout and Calling Conventions. */ /*----------------------------------------*/ Index: gcc/config/moxie/moxie.h =================================================================== --- gcc/config/moxie/moxie.h (revision 165326) +++ gcc/config/moxie/moxie.h (working copy) @@ -201,11 +201,6 @@ #define CLASS_MAX_NREGS(CLASS, MODE) \ ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) -/* A C expression that places additional restrictions on the register - class to use when it is necessary to copy value X into a register - in class CLASS. */ -#define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS - /* The Overall Framework of an Assembler File */ #undef ASM_SPEC Index: gcc/config/picochip/picochip.h =================================================================== --- gcc/config/picochip/picochip.h (revision 165326) +++ gcc/config/picochip/picochip.h (working copy) @@ -355,8 +355,6 @@ #define REGNO_OK_FOR_INDEX_P(REGNO) 0 -#define PREFERRED_RELOAD_CLASS(X, CLASS) CLASS - #define CLASS_MAX_NREGS(CLASS, MODE) picochip_class_max_nregs(CLASS, MODE) Index: gcc/config/arc/arc.h =================================================================== --- gcc/config/arc/arc.h (revision 165326) +++ gcc/config/arc/arc.h (working copy) @@ -376,13 +376,6 @@ #define REGNO_OK_FOR_INDEX_P(REGNO) \ ((REGNO) < 32 || (unsigned) reg_renumber[REGNO] < 32) -/* 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 on some machines - in some cases it is preferable to use a more restrictive class. */ -#define PREFERRED_RELOAD_CLASS(X,CLASS) \ -(CLASS) - /* Return the maximum number of consecutive registers needed to represent mode MODE in a register of class CLASS. */ #define CLASS_MAX_NREGS(CLASS, MODE) \ Index: gcc/config/pa/pa.c =================================================================== --- gcc/config/pa/pa.c (revision 165326) +++ gcc/config/pa/pa.c (working copy) @@ -1665,7 +1665,7 @@ Use scratch_reg to hold the address of the memory location. - The proper fix is to change PREFERRED_RELOAD_CLASS to return + The proper fix is to change TARGET_PREFERRED_RELOAD_CLASS to return NO_REGS when presented with a const_int and a register class containing only FP registers. Doing so unfortunately creates more problems than it solves. Fix this for 2.5. */ Index: gcc/config/pa/pa.h =================================================================== --- gcc/config/pa/pa.h (revision 165326) +++ gcc/config/pa/pa.h (working copy) @@ -491,12 +491,6 @@ /* True if register is floating-point. */ #define FP_REGNO_P(N) ((N) >= FP_REG_FIRST && (N) <= FP_REG_LAST) -/* 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 on some machines - in some cases it is preferable to use a more restrictive class. */ -#define PREFERRED_RELOAD_CLASS(X,CLASS) (CLASS) - #define MAYBE_FP_REG_CLASS_P(CLASS) \ reg_classes_intersect_p ((CLASS), FP_REGS) Index: gcc/config/vax/vax.h =================================================================== --- gcc/config/vax/vax.h (revision 165326) +++ gcc/config/vax/vax.h (working copy) @@ -258,13 +258,6 @@ #define INDEX_REG_CLASS ALL_REGS #define BASE_REG_CLASS ALL_REGS -/* 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 on some machines - in some cases it is preferable to use a more restrictive class. */ - -#define PREFERRED_RELOAD_CLASS(X,CLASS) (CLASS) - /* Return the maximum number of consecutive registers needed to represent mode MODE in a register of class CLASS. */ /* On the VAX, this is always the size of MODE in words, Index: gcc/config/h8300/h8300.h =================================================================== --- gcc/config/h8300/h8300.h (revision 165326) +++ gcc/config/h8300/h8300.h (working copy) @@ -455,13 +455,6 @@ ((C) == 'G' ? (VALUE) == CONST0_RTX (SFmode) \ : 0) -/* 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 on some machines - in some cases it is preferable to use a more restrictive class. */ - -#define PREFERRED_RELOAD_CLASS(X, CLASS) (CLASS) - /* Return the maximum number of consecutive registers needed to represent mode MODE in a register of class CLASS. */ Index: gcc/config/v850/v850.h =================================================================== --- gcc/config/v850/v850.h (revision 165326) +++ gcc/config/v850/v850.h (working copy) @@ -376,13 +376,6 @@ #define REGNO_OK_FOR_INDEX_P(regno) 0 -/* 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 on some machines - in some cases it is preferable to use a more restrictive class. */ - -#define PREFERRED_RELOAD_CLASS(X,CLASS) (CLASS) - /* Return the maximum number of consecutive registers needed to represent mode MODE in a register of class CLASS. */