From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21374 invoked by alias); 10 Aug 2007 08:49:07 -0000 Received: (qmail 21352 invoked by uid 22791); 10 Aug 2007 08:49:06 -0000 X-Spam-Check-By: sourceware.org Received: from pfepc.post.tele.dk (HELO pfepc.post.tele.dk) (195.41.46.237) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 10 Aug 2007 08:49:02 +0000 Received: from x1-6-00-0f-9f-c6-3e-90 (x1-6-00-0f-9f-c6-3e-90.k75.webspeed.dk [80.197.1.215]) by pfepc.post.tele.dk (Postfix) with ESMTP id BCE6E8A004F for ; Fri, 10 Aug 2007 10:48:58 +0200 (CEST) Received: from x1-6-00-0f-9f-c6-3e-90 (localhost.localdomain [127.0.0.1]) by x1-6-00-0f-9f-c6-3e-90 (8.14.0/8.14.0) with ESMTP id l7A8mwST024327 for ; Fri, 10 Aug 2007 10:48:58 +0200 Received: (from rask@localhost) by x1-6-00-0f-9f-c6-3e-90 (8.14.0/8.14.0/Submit) id l7A8mwEY024326 for gcc-patches@gcc.gnu.org; Fri, 10 Aug 2007 10:48:58 +0200 Date: Fri, 10 Aug 2007 08:49:00 -0000 From: Rask Ingemann Lambertsen To: gcc-patches@gcc.gnu.org Subject: PING [PATCH 3/9] reload_reg_free(): don't clobber inherited registers Message-ID: <20070810084857.GR25795@sygehus.dk> References: <20070730134217.GK25795@sygehus.dk> <20070730150822.GN25795@sygehus.dk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20070730150822.GN25795@sygehus.dk> User-Agent: Mutt/1.5.14 (2007-02-12) Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2007-08/txt/msg00651.txt.bz2 On Mon, Jul 30, 2007 at 05:08:22PM +0200, Rask Ingemann Lambertsen wrote: > In , I described a > case where reload allocates a a register for a RELOAD_FOR_OPADDR_ADDR > and in doing so, picks a register inherited for a > RELOAD_FOR_OPERAND_ADDRESS, thereby clobbering the register. This patch > fixes it by adding a test for this case. > > This and the other two reload patches in this patch set were bootstrapped > and tested together on x86_64-unknown-linux-gnu with no new failures. I also > built and tested cross compilers for arm-unknown-elf, cris-axis-elf, > m32c-unknown-elf, mipsisa64-unknown-elf, sh-unknown-elf and v850-unknown-elf > with no new failures. > > Ok for trunk? > > 2007-07-30 Rask Ingemann Lambertsen > > * reload1.c (reload_reg_free_p): A register isn't free to use in > RELOAD_FOR_OPADDR_ADDR when already inherited for use in > RELOAD_FOR_OPERAND_ADDRESS. > > Index: gcc/reload1.c > =================================================================== > --- gcc/reload1.c (revision 127048) > +++ gcc/reload1.c (working copy) > @@ -4745,8 +4745,11 @@ reload_reg_free_p (unsigned int regno, i > case RELOAD_FOR_OPADDR_ADDR: > for (i = 0; i < reload_n_operands; i++) > if (TEST_HARD_REG_BIT (reload_reg_used_in_input[i], regno)) > return 0; > + if (TEST_HARD_REG_BIT (reload_reg_used_for_inherit, regno) > + && TEST_HARD_REG_BIT (reload_reg_used_in_op_addr, regno)) > + return 0; > > return (!TEST_HARD_REG_BIT (reload_reg_used_in_op_addr_reload, regno)); > > case RELOAD_FOR_OUTPUT: > > -- > Rask Ingemann Lambertsen