diff options
author | Uros Bizjak <uros@kss-loka.si> | 2005-01-04 16:44:25 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2005-01-04 16:44:25 +0100 |
commit | 21e5076a0b103569103829459be6457c3c39e39d (patch) | |
tree | 6f5abb5eb8e24f267bbefd9b81df36259ebcfce3 /gcc | |
parent | 8ea9d0c7c932328745976c01943afafaa8c729ee (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/cse.c | 4 | ||||
-rw-r--r-- | gcc/simplify-rtx.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/i386-mmx-6.c | 17 |
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 @@ -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; +} |