This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: matching constraints for differently sized operands (fwd)


>From owner-gcc-local@cygnus.com  Sun Jan 21 03:31:56 2001
Return-Path: <owner-gcc-local@cygnus.com>
Delivered-To: amylaar@cambridge.redhat.com
Received: from cygnus.com (runyon.cygnus.com [205.180.230.5])
	by executor.cambridge.redhat.com (Postfix) with ESMTP
	id 0C148ABAA9; Sun, 21 Jan 2001 03:31:55 +0000 (GMT)
Received: from executor.cambridge.redhat.com (dell-pe2450-1.cambridge.redhat.com [172.16.18.1])
	by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id TAA03439;
	Sat, 20 Jan 2001 19:31:36 -0800 (PST)
Received: from phal.cambridge.redhat.com (phal.cambridge.redhat.com [172.16.18.68])
	by executor.cambridge.redhat.com (Postfix) with ESMTP
	id 531E6ABAA9; Sun, 21 Jan 2001 03:31:39 +0000 (GMT)
Received: (from amylaar@localhost)
	by phal.cambridge.redhat.com (8.11.0/8.11.0) id f0L3VcP29792;
	Sun, 21 Jan 2001 03:31:38 GMT
From: Joern Rennecke <amylaar@cambridge.redhat.com>
Message-Id: <200101210331.f0L3VcP29792@phal.cambridge.redhat.com>
Subject: Re: matching constraints for differently sized operands
To: law@cygnus.com
Date: Sun, 21 Jan 2001 03:31:37 +0000 (GMT)
In-Reply-To: <200101210214.f0L2EqY01537@phal.cambridge.redhat.com> from "Joern Rennecke" at Jan 21, 2001 02:14:52 AM
X-Mailer: ELM [version 2.5 PL3]
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

P.S.:
emit_input_reload_insns and emit_output_reload_insns in reload1.c
also lack big-endian correction.

Sun Jan 21 03:29:19 2001  J"orn Rennecke <amylaar@redhat.com>

	* reload1.c (emit_input_reload_insns, emit_output_reload_insns):
	When changing the mode of reloadreg, do big-endian correction.

Index: reload1.c
===================================================================
RCS file: /cvs/cvsfiles/devo/gcc/reload1.c,v
retrieving revision 1.287
diff -p -r1.287 reload1.c
*** reload1.c	2001/01/13 20:18:41	1.287
--- reload1.c	2001/01/21 03:27:08
*************** emit_input_reload_insns (chain, rl, old,
*** 6237,6243 ****
       must always be a REG here.  */
  
    if (GET_MODE (reloadreg) != mode)
!     reloadreg = gen_rtx_REG (mode, REGNO (reloadreg));
    while (GET_CODE (oldequiv) == SUBREG && GET_MODE (oldequiv) != mode)
      oldequiv = SUBREG_REG (oldequiv);
    if (GET_MODE (oldequiv) != VOIDmode
--- 6237,6251 ----
       must always be a REG here.  */
  
    if (GET_MODE (reloadreg) != mode)
!     {
!       int regno = REGNO (reloadreg);
! 
!       if (WORDS_BIG_ENDIAN)
! 	regno += (HARD_REGNO_NREGS (regno, GET_MODE (reloadreg))
! 		  - HARD_REGNO_NREGS (regno, mode));
!       reloadreg = gen_rtx_REG (mode, regno);
!     }
! 
    while (GET_CODE (oldequiv) == SUBREG && GET_MODE (oldequiv) != mode)
      oldequiv = SUBREG_REG (oldequiv);
    if (GET_MODE (oldequiv) != VOIDmode
*************** emit_output_reload_insns (chain, rl, j)
*** 6600,6606 ****
      }
  
    if (GET_MODE (reloadreg) != mode)
!     reloadreg = gen_rtx_REG (mode, REGNO (reloadreg));
  
  #ifdef SECONDARY_OUTPUT_RELOAD_CLASS
  
--- 6608,6621 ----
      }
  
    if (GET_MODE (reloadreg) != mode)
!     {
!       int regno = REGNO (reloadreg);
! 
!       if (WORDS_BIG_ENDIAN)
! 	regno += (HARD_REGNO_NREGS (regno, GET_MODE (reloadreg))
! 		  - HARD_REGNO_NREGS (regno, mode));
!       reloadreg = gen_rtx_REG (mode, regno);
!     }
  
  #ifdef SECONDARY_OUTPUT_RELOAD_CLASS
  


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]