diff options
author | Joseph Myers <joseph@codesourcery.com> | 2009-03-31 13:51:02 +0100 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2009-03-31 13:51:02 +0100 |
commit | 8f6121903f11d285d7494ae15bb9d36a27e1a405 (patch) | |
tree | e6ac1154173facce79cf25e9b672bfd4911ba334 /gcc | |
parent | 47580d22b27148144811c505b6450acd9dd8d729 (diff) | |
download | gcc-8f6121903f11d285d7494ae15bb9d36a27e1a405.zip gcc-8f6121903f11d285d7494ae15bb9d36a27e1a405.tar.gz gcc-8f6121903f11d285d7494ae15bb9d36a27e1a405.tar.bz2 |
re PR target/39592 (Revision 145272 breaks -ansi -msse)
PR target/39592
* config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
define_splits, floatunssi<mode>2): Require x87 conversions from
DImode to be permitted.
testsuite:
* gcc.target/i386/pr39592-1.c: New test.
From-SVN: r145342
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr39592-1.c | 10 |
4 files changed, 26 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1b75a51..5b975fd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2009-03-31 Joseph Myers <joseph@codesourcery.com> + PR target/39592 + * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed + define_splits, floatunssi<mode>2): Require x87 conversions from + DImode to be permitted. + +2009-03-31 Joseph Myers <joseph@codesourcery.com> + PR preprocessor/15638 * c-common.c (c_cpp_error): Handle CPP_DL_FATAL. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 9592f91..c43f336 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 (<X87MODEF:MODE>mode, SImode) + && TARGET_80387 && X87_ENABLE_FLOAT (<X87MODEF:MODE>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 (<X87MODEF:MODE>mode, SImode) + && TARGET_80387 && X87_ENABLE_FLOAT (<X87MODEF:MODE>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 (<X87MODEF:MODE>mode, SImode) + && TARGET_80387 && X87_ENABLE_FLOAT (<X87MODEF:MODE>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 (<X87MODEF:MODE>mode, SImode) + && ((TARGET_80387 && X87_ENABLE_FLOAT (<X87MODEF:MODE>mode, DImode) && TARGET_SSE) || (SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH))" { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3593c7d..4dab877 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2009-03-31 Joseph Myers <joseph@codesourcery.com> + PR target/39592 + * gcc.target/i386/pr39592-1.c: New test. + +2009-03-31 Joseph Myers <joseph@codesourcery.com> + PR preprocessor/15638 * gcc.dg/cpp/missing-header-1.c: New test. * gcc.dg/cpp/include2.c: Only test #include <>. Expect 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 0000000..a7f3704 --- /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; +} |