From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16337 invoked by alias); 30 Aug 2007 08:27:07 -0000 Received: (qmail 16327 invoked by uid 22791); 30 Aug 2007 08:27:06 -0000 X-Spam-Check-By: sourceware.org Received: from pfepa.post.tele.dk (HELO pfepa.post.tele.dk) (195.41.46.235) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 30 Aug 2007 08:26:58 +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 pfepa.post.tele.dk (Postfix) with ESMTP id 76B38FAC0A1 for ; Thu, 30 Aug 2007 10:26:56 +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 l7U8QtXU021239 for ; Thu, 30 Aug 2007 10:26:56 +0200 Received: (from rask@localhost) by x1-6-00-0f-9f-c6-3e-90 (8.14.0/8.14.0/Submit) id l7U8QtD8021236 for gcc-patches@gcc.gnu.org; Thu, 30 Aug 2007 10:26:55 +0200 Date: Thu, 30 Aug 2007 08:28:00 -0000 From: Rask Ingemann Lambertsen To: gcc-patches@gcc.gnu.org Subject: ping^3 [PATCH] Fix reloads_unique_chain_p() missing a conflict Message-ID: <20070830082655.GC25795@sygehus.dk> References: <20070730134217.GK25795@sygehus.dk> <20070730143745.GM25795@sygehus.dk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20070730143745.GM25795@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/msg02154.txt.bz2 On Mon, Jul 30, 2007 at 04:37:45PM +0200, Rask Ingemann Lambertsen wrote: > As discussed starting with this message > , it is > possible for reloads_unique_chain() to miss a reload conflict. It happens > when two reloads are in a different other than expected. Reloads are sorted > using target specific information and besides, the sorting is performed by > qsort() which isn't guaranteed to be stable. The fix here is to check both > reloads passed to reloads_unique_chain_p(). > > 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 (reloads_unique_chain_p): Check both reloads. > > Index: gcc/reload1.c > =================================================================== > --- gcc/reload1.c (revision 126653) > +++ gcc/reload1.c (working copy) > @@ -4960,7 +4976,8 @@ reloads_unique_chain_p (int r1, int r2) > if (i != r1 && i != r2 && rld[i].in) > { > /* If our reload is mentioned at all, it isn't a simple chain. */ > - if (reg_mentioned_p (rld[r1].in, rld[i].in)) > + if (reg_mentioned_p (rld[r1].in, rld[i].in) > + || reg_mentioned_p (rld[r2].in, rld[i].in)) > return false; > } > return true; > > -- > Rask Ingemann Lambertsen