aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2009-03-31 13:51:02 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2009-03-31 13:51:02 +0100
commit8f6121903f11d285d7494ae15bb9d36a27e1a405 (patch)
treee6ac1154173facce79cf25e9b672bfd4911ba334 /gcc
parent47580d22b27148144811c505b6450acd9dd8d729 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/config/i386/i386.md8
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr39592-1.c10
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;
+}