diff options
author | Richard Guenther <rguenther@suse.de> | 2006-07-05 16:24:57 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2006-07-05 16:24:57 +0000 |
commit | dc8f5205374552519f0e4a89c115f3a17c23931b (patch) | |
tree | 1afb75da61cccfa85883a682672ee61efc2fe34d | |
parent | 30a843c33c55162e331f4ce1f0283abb34dc01a7 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr28158.f90 | 7 |
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 |