aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <uros@kss-loka.si>2005-01-04 16:44:25 +0100
committerUros Bizjak <uros@gcc.gnu.org>2005-01-04 16:44:25 +0100
commit21e5076a0b103569103829459be6457c3c39e39d (patch)
tree6f5abb5eb8e24f267bbefd9b81df36259ebcfce3 /gcc
parent8ea9d0c7c932328745976c01943afafaa8c729ee (diff)
downloadgcc-21e5076a0b103569103829459be6457c3c39e39d.zip
gcc-21e5076a0b103569103829459be6457c3c39e39d.tar.gz
gcc-21e5076a0b103569103829459be6457c3c39e39d.tar.bz2
re PR middle-end/17767 (MMX intrinsics cause internal compiler error)
PR middle-end/17767 * cse.c (fold_rtx) [RTX_COMPARE, RTX_COMM_COMPARE]: Don't attempt any simplifications of vector mode comparison operators. * simplify-rtx.c (simplify_relational_operation): Fix variable name. testsuite: * gcc.dg/i386-mmx-6.c: New test case. From-SVN: r92896
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/cse.c4
-rw-r--r--gcc/simplify-rtx.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/i386-mmx-6.c17
5 files changed, 34 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5d83e22..14c2438 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,8 +1,14 @@
+2005-01-04 Uros Bizjak <uros@kss-loka.si>
+
+ PR middle-end/17767
+ * cse.c (fold_rtx) [RTX_COMPARE, RTX_COMM_COMPARE]: Don't attempt
+ any simplifications of vector mode comparison operators.
+ * simplify-rtx.c (simplify_relational_operation): Fix variable name.
+
2005-01-04 Paolo Bonzini <bonzini@gnu.org>
Devang Patel <dpatel@apple.com>
PR tree-optimization/18308
-
* tree-if-conv.c (add_to_dst_predicate_list): Gimplify
the operands before creating a new expression.
* dojump.c (do_jump): Make drop_through_label available
diff --git a/gcc/cse.c b/gcc/cse.c
index 09c113b..766c725 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -3865,6 +3865,10 @@ fold_rtx (rtx x, rtx insn)
constant, set CONST_ARG0 and CONST_ARG1 appropriately. We needn't
do anything if both operands are already known to be constant. */
+ /* ??? Vector mode comparisons are not supported yet. */
+ if (VECTOR_MODE_P (mode))
+ break;
+
if (const_arg0 == 0 || const_arg1 == 0)
{
struct table_elt *p0, *p1;
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index 6525e16..6e208aa 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -2757,7 +2757,7 @@ simplify_relational_operation (enum rtx_code code, enum machine_mode mode,
#ifdef VECTOR_STORE_FLAG_VALUE
{
int i, units;
- rtvec c;
+ rtvec v;
rtx val = VECTOR_STORE_FLAG_VALUE (mode);
if (val == NULL_RTX)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c376fce..a1b4442 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-01-04 Uros Bizjak <uros@kss-loka.si>
+
+ PR middle-end/17767
+ * gcc.dg/i386-mmx-6.c: New test case.
+
2005-01-04 Paolo Bonzini <bonzini@gnu.org>
PR tree-optimization/18308
diff --git a/gcc/testsuite/gcc.dg/i386-mmx-6.c b/gcc/testsuite/gcc.dg/i386-mmx-6.c
new file mode 100644
index 0000000..8938d2c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/i386-mmx-6.c
@@ -0,0 +1,17 @@
+/* PR middle-end/17767 */
+/* Contributed by Volker Reichelt <reichelt@igpm.rwth-aachen.de> */
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O -mmmx" } */
+typedef int __m64 __attribute__ ((vector_size (8)));
+typedef short __v4hi __attribute__ ((vector_size (8)));
+
+__m64 foo ()
+{
+ int i;
+ __m64 m;
+
+ for (i = 0; i < 2; i++)
+ m = (__m64) __builtin_ia32_pcmpeqw ((__v4hi) m, (__v4hi) m);
+
+ return m;
+}