This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: GCC-3.3.6 release status
- From: Roger Sayle <roger at eyesopen dot com>
- To: Gabriel Dos Reis <gdr at cs dot tamu dot edu>
- Cc: gcc-patches at gcc dot gnu dot org, <gcc at gcc dot gnu dot org>
- Date: Sat, 22 Jan 2005 19:52:16 -0700 (MST)
- Subject: Re: GCC-3.3.6 release status
On 20 Jan 2005, Gabriel Dos Reis wrote:
> There are currently 29 open PRs targetted for 3.3.6. Among which,
> two are critical: rtl-optimization/15853 and target/18402.
Many thanks to Jakub (and Ralf) for fixing the latter.
The following patch has been tested against the gcc-3_3-branch on
i686-pc-linux-gnu with a full "make bootstrap", all default languages
except Ada, and regression tested with a top-level "make -k check"
with no new failures. I've reconfirmed that backporting this patch
resolves the failure in PR target/18402.
Ok for the gcc-3_3-branch?
2005-01-22 Roger Sayle <roger@eyesopen.com>
PR target/18402
Backport from mainline
2003-02-05 Jakub Jelinek <jakub@redhat.com>
PR optimization/8555
* config/i386/i386.md (sse_mov?fcc split): Handle op2 == op3 case
instead of aborting.
* gcc.dg/20030204-1.c: New test.
Index: i386.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.md,v
retrieving revision 1.404.2.28
diff -c -3 -p -r1.404.2.28 i386.md
*** i386.md 16 Dec 2004 09:31:17 -0000 1.404.2.28
--- i386.md 23 Jan 2005 00:51:03 -0000
***************
*** 16686,16695 ****
(set (subreg:TI (match_dup 0) 0) (ior:TI (subreg:TI (match_dup 6) 0)
(subreg:TI (match_dup 7) 0)))]
{
! /* If op2 == op3, op3 will be clobbered before it is used.
! This should be optimized out though. */
if (operands_match_p (operands[2], operands[3]))
! abort ();
PUT_MODE (operands[1], GET_MODE (operands[0]));
if (operands_match_p (operands[0], operands[4]))
operands[6] = operands[4], operands[7] = operands[2];
--- 16686,16697 ----
(set (subreg:TI (match_dup 0) 0) (ior:TI (subreg:TI (match_dup 6) 0)
(subreg:TI (match_dup 7) 0)))]
{
! /* If op2 == op3, op3 would be clobbered before it is used. */
if (operands_match_p (operands[2], operands[3]))
! {
! emit_move_insn (operands[0], operands[2]);
! DONE;
! }
PUT_MODE (operands[1], GET_MODE (operands[0]));
if (operands_match_p (operands[0], operands[4]))
operands[6] = operands[4], operands[7] = operands[2];
/* PR optimization/8555 */
/* { dg-do compile } */
/* { dg-options "-O -ffast-math -funroll-loops" } */
/* { dg-options "-march=pentium3 -O -ffast-math -funroll-loops" { target i?86-*-* } } */
float foo (float *a, int i)
{
int j;
float x = a[j = i - 1], y;
for (j = i; --j >= 0; )
if ((y = a[j]) > x)
x = y;
return x;
}
Roger
--