From: Roger Sayle Date: Sun, 23 Jan 2005 05:16:14 +0000 (+0000) Subject: re PR target/18402 (ICE in gen_split_1204 on i686-pc-linux-gnu target) X-Git-Tag: releases/gcc-3.3.6~119 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d64f69365ac6e3b3cba4921fc1936af226066ba7;p=thirdparty%2Fgcc.git re PR target/18402 (ICE in gen_split_1204 on i686-pc-linux-gnu target) PR target/18402 Backport from mainline 2003-02-05 Jakub Jelinek 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. From-SVN: r94103 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c40cbb29ca72..4f481e683adc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2005-01-22 Roger Sayle + + PR target/18402 + Backport from mainline + 2003-02-05 Jakub Jelinek + + PR optimization/8555 + * config/i386/i386.md (sse_mov?fcc split): Handle op2 == op3 case + instead of aborting. + 2005-01-21 Giovanni Bajo * gccbug.in: Update optimization -> tree-optimization/rtl-optimization. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index e5cb582cab40..503282604502 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -16686,10 +16686,12 @@ (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 op2 == op3, op3 would be clobbered before it is used. */ if (operands_match_p (operands[2], operands[3])) - abort (); + { + 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]; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e967c1de643b..ee7b6ed3031f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2005-01-22 Roger Sayle + + PR target/18402 + Backport from mainline + 2003-02-05 Jakub Jelinek + + PR optimization/8555 + * gcc.dg/20030204-1.c: New test. + 2005-01-21 Giovanni Bajo PR c++/17115 diff --git a/gcc/testsuite/gcc.dg/20030204-1.c b/gcc/testsuite/gcc.dg/20030204-1.c index 33a9eb229f9c..e236e3a3a39c 100644 --- a/gcc/testsuite/gcc.dg/20030204-1.c +++ b/gcc/testsuite/gcc.dg/20030204-1.c @@ -2,7 +2,6 @@ /* { dg-do compile } */ /* { dg-options "-O -ffast-math -funroll-loops" } */ /* { dg-options "-march=pentium3 -O -ffast-math -funroll-loops" { target i?86-*-* } } */ -/* { dg-skip-if "" { i?86-*-* } { "-m64" } { "" } } */ float foo (float *a, int i) {