OSDN Git Service

PR target/39592
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 31 Mar 2009 12:51:02 +0000 (12:51 +0000)
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 31 Mar 2009 12:51:02 +0000 (12:51 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145342 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/i386.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr39592-1.c [new file with mode: 0644]

index 1b75a51..5b975fd 100644 (file)
@@ -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.
 
index 9592f91..c43f336 100644 (file)
    (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")
    (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))
    (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))
       (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))"
 {
index 3593c7d..4dab877 100644 (file)
@@ -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 (file)
index 0000000..a7f3704
--- /dev/null
@@ -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;
+}