From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28577 invoked by alias); 30 Jul 2007 15:08:30 -0000 Received: (qmail 28569 invoked by uid 22791); 30 Jul 2007 15:08:29 -0000 X-Spam-Check-By: sourceware.org Received: from pfepb.post.tele.dk (HELO pfepb.post.tele.dk) (195.41.46.236) by sourceware.org (qpsmtpd/0.31) with ESMTP; Mon, 30 Jul 2007 15:08:26 +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 pfepb.post.tele.dk (Postfix) with ESMTP id 0BF67A50022 for ; Mon, 30 Jul 2007 17:08:22 +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 l6UF8NJK011673 for ; Mon, 30 Jul 2007 17:08:23 +0200 Received: (from rask@localhost) by x1-6-00-0f-9f-c6-3e-90 (8.14.0/8.14.0/Submit) id l6UF8NWE011672 for gcc-patches@gcc.gnu.org; Mon, 30 Jul 2007 17:08:23 +0200 Date: Mon, 30 Jul 2007 16:10:00 -0000 From: Rask Ingemann Lambertsen To: gcc-patches@gcc.gnu.org Subject: [PATCH 3/9] reload_reg_free(): Message-ID: <20070730150822.GN25795@sygehus.dk> References: <20070730134217.GK25795@sygehus.dk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20070730134217.GK25795@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-07/txt/msg02114.txt.bz2 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