aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2006-07-05 16:24:57 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2006-07-05 16:24:57 +0000
commitdc8f5205374552519f0e4a89c115f3a17c23931b (patch)
tree1afb75da61cccfa85883a682672ee61efc2fe34d
parent30a843c33c55162e331f4ce1f0283abb34dc01a7 (diff)
downloadgcc-dc8f5205374552519f0e4a89c115f3a17c23931b.zip
gcc-dc8f5205374552519f0e4a89c115f3a17c23931b.tar.gz
gcc-dc8f5205374552519f0e4a89c115f3a17c23931b.tar.bz2
re PR target/28158 (ICE on complex operation with -O1 -msse)
2006-07-05 Richard Guenther <rguenther@suse.de> PR target/28158 * config/i386/i386.md (*negdf2_1): Restrict pattern to TARGET_SSE2 targets if using SSE math. (*absdf2_1): Likewise. * gfortran.dg/pr28158.f90: New testcase. From-SVN: r115203
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/i386/i386.md4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr28158.f907
4 files changed, 21 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 798fe03..93de949 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2006-07-05 Richard Guenther <rguenther@suse.de>
+ PR target/28158
+ * config/i386/i386.md (*negdf2_1): Restrict pattern to
+ TARGET_SSE2 targets if using SSE math.
+ (*absdf2_1): Likewise.
+
+2006-07-05 Richard Guenther <rguenther@suse.de>
+
PR tree-optimization/28162
* fold-const.c (fold_binary): For (-A) * (-B) -> A * B
make sure to convert the operands to the correct type.
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 80c352c..ee2e76b 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -9913,7 +9913,7 @@
(define_insn "*negdf2_1"
[(set (match_operand:DF 0 "register_operand" "=f")
(neg:DF (match_operand:DF 1 "register_operand" "0")))]
- "TARGET_80387 && (reload_completed || !TARGET_SSE_MATH)"
+ "TARGET_80387 && (reload_completed || !(TARGET_SSE2 && TARGET_SSE_MATH))"
"fchs"
[(set_attr "type" "fsgn")
(set_attr "mode" "DF")])
@@ -9937,7 +9937,7 @@
(define_insn "*absdf2_1"
[(set (match_operand:DF 0 "register_operand" "=f")
(abs:DF (match_operand:DF 1 "register_operand" "0")))]
- "TARGET_80387 && (reload_completed || !TARGET_SSE_MATH)"
+ "TARGET_80387 && (reload_completed || !(TARGET_SSE2 && TARGET_SSE_MATH))"
"fabs"
[(set_attr "type" "fsgn")
(set_attr "mode" "DF")])
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e40ce0b..60e18a3 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2006-07-05 Richard Guenther <rguenther@suse.de>
+ PR target/28158
+ * gfortran.dg/pr28158.f90: New testcase.
+
+2006-07-05 Richard Guenther <rguenther@suse.de>
+
PR tree-optimization/28162
* gcc.dg/pr28162.c: New testcase.
diff --git a/gcc/testsuite/gfortran.dg/pr28158.f90 b/gcc/testsuite/gfortran.dg/pr28158.f90
new file mode 100644
index 0000000..4556ecd
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr28158.f90
@@ -0,0 +1,7 @@
+! { dg-do compile { target i?86-*-* x86_64-*-* } }
+! { dg-require-effective-target ilp32 }
+! { dg-options "-O -msse -mfpmath=sse" }
+ subroutine yhalf(z)
+ complex cdexpj,z
+ z=cdexpj((0.d0,1.d0)*z)
+ end