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
This commit is contained in:
Uros Bizjak 2005-01-04 16:44:25 +01:00 committed by Uros Bizjak
parent 8ea9d0c7c9
commit 21e5076a0b
5 changed files with 34 additions and 2 deletions

View File

@ -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

View File

@ -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;

View File

@ -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)

View File

@ -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

View File

@ -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;
}