From: Joseph Myers Date: Tue, 31 Mar 2009 12:51:02 +0000 (+0100) Subject: re PR target/39592 (Revision 145272 breaks -ansi -msse) X-Git-Tag: releases/gcc-4.5.0~7005 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8f6121903f11d285d7494ae15bb9d36a27e1a405;p=thirdparty%2Fgcc.git re PR target/39592 (Revision 145272 breaks -ansi -msse) PR target/39592 * config/i386/i386.md (*floatunssi2_1, two unnamed define_splits, floatunssi2): Require x87 conversions from DImode to be permitted. testsuite: * gcc.target/i386/pr39592-1.c: New test. From-SVN: r145342 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1b75a51425fd..5b975fd18e43 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2009-03-31 Joseph Myers + + PR target/39592 + * config/i386/i386.md (*floatunssi2_1, two unnamed + define_splits, floatunssi2): Require x87 conversions from + DImode to be permitted. + 2009-03-31 Joseph Myers PR preprocessor/15638 diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 9592f91ff7ee..c43f3362a1d0 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -5654,7 +5654,7 @@ (clobber (match_operand:DI 2 "memory_operand" "=m,m")) (clobber (match_scratch:SI 3 "=X,x"))] "!TARGET_64BIT - && TARGET_80387 && X87_ENABLE_FLOAT (mode, SImode) + && TARGET_80387 && X87_ENABLE_FLOAT (mode, DImode) && TARGET_SSE" "#" [(set_attr "type" "multi") @@ -5667,7 +5667,7 @@ (clobber (match_operand:DI 2 "memory_operand" "")) (clobber (match_scratch:SI 3 ""))] "!TARGET_64BIT - && TARGET_80387 && X87_ENABLE_FLOAT (mode, SImode) + && TARGET_80387 && X87_ENABLE_FLOAT (mode, DImode) && TARGET_SSE && reload_completed" [(set (match_dup 2) (match_dup 1)) @@ -5682,7 +5682,7 @@ (clobber (match_operand:DI 2 "memory_operand" "")) (clobber (match_scratch:SI 3 ""))] "!TARGET_64BIT - && TARGET_80387 && X87_ENABLE_FLOAT (mode, SImode) + && TARGET_80387 && X87_ENABLE_FLOAT (mode, DImode) && TARGET_SSE && reload_completed" [(set (match_dup 2) (match_dup 3)) @@ -5701,7 +5701,7 @@ (clobber (match_dup 2)) (clobber (match_scratch:SI 3 ""))])] "!TARGET_64BIT - && ((TARGET_80387 && X87_ENABLE_FLOAT (mode, SImode) + && ((TARGET_80387 && X87_ENABLE_FLOAT (mode, DImode) && TARGET_SSE) || (SSE_FLOAT_MODE_P (mode) && TARGET_SSE_MATH))" { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3593c7d538b5..4dab8771ddad 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-03-31 Joseph Myers + + PR target/39592 + * gcc.target/i386/pr39592-1.c: New test. + 2009-03-31 Joseph Myers PR preprocessor/15638 diff --git a/gcc/testsuite/gcc.target/i386/pr39592-1.c b/gcc/testsuite/gcc.target/i386/pr39592-1.c new file mode 100644 index 000000000000..a7f37043bc51 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr39592-1.c @@ -0,0 +1,10 @@ +/* Test for ICE with C99-conforming excess precision and -msse. PR + 39592. */ +/* { dg-do compile } */ +/* { dg-options "-ansi -msse" } */ + +double +foo (unsigned long var) +{ + return var; +}