diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 22 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/altivec-5.c | 12 |
4 files changed, 36 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bb849b8af60..915a13c7a2b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2002-04-16 Jakub Jelinek <jakub@redhat.com> + + PR c/6290 + * config/rs6000/rs6000.c (easy_vector_constant): Return 1 if the + CONST_VECTOR is { 0, ... 0 }. + 2002-04-15 Loren J. Rittle <ljrittle@acm.org> * doc/install.texi (Installing GCC: Configuration): Clarify diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 99e7af6cd30..04098107f75 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -1219,18 +1219,24 @@ easy_vector_constant (op) with CONST0_RTX for the current mode, but let's be safe instead. */ - if (GET_CODE (elt) == CONST_INT && INTVAL (elt) != 0) - return 0; - - if (GET_CODE (elt) == CONST_DOUBLE - && (CONST_DOUBLE_LOW (elt) != 0 - || CONST_DOUBLE_HIGH (elt) != 0)) - return 0; + switch (GET_CODE (elt)) + { + case CONST_INT: + if (INTVAL (elt) != 0) + return 0; + break; + case CONST_DOUBLE: + if (CONST_DOUBLE_LOW (elt) != 0 || CONST_DOUBLE_HIGH (elt) != 0) + return 0; + break; + default: + return 0; + } } /* We could probably generate a few other constants trivially, but gcc doesn't generate them yet. FIXME later. */ - return 0; + return 1; } /* Return 1 if the operand is the constant 0. This works for scalars diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4fa62b357ba..f5f85153d59 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2002-04-16 Jakub Jelinek <jakub@redhat.com> + + * gcc.dg/altivec-5.c: New test. + 2002-04-15 Mark Mitchell <mark@codesourcery.com> * testsuite/lib/chill.exp: Remove. diff --git a/gcc/testsuite/gcc.dg/altivec-5.c b/gcc/testsuite/gcc.dg/altivec-5.c new file mode 100644 index 00000000000..61d19d9cd9b --- /dev/null +++ b/gcc/testsuite/gcc.dg/altivec-5.c @@ -0,0 +1,12 @@ +/* { dg-do compile { target powerpc-*-* } } */ +/* { dg-options "-maltivec -O2" } */ + +#define vector __attribute__((vector_size(16))) + +void foo (const unsigned long x, + vector signed int a, vector signed int b) +{ + unsigned char d[64]; + + __builtin_altivec_stvewx (b, 0, d); +} |