From f8103b9fe2ecc084b253fd0780ff5344703dfb7a Mon Sep 17 00:00:00 2001 From: Aldy Hernandez Date: Fri, 10 Jun 2005 17:04:09 +0000 Subject: [PATCH] re PR middle-end/17961 (ICE for operation on small vector with altivec enabled) PR 17961 * config/rs6000/sysv4.h (ROUND_TYPE_ALIGN): Remove. * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Remove vector check. * testsuite/gcc.dg/simd-3.c: New. From-SVN: r100820 --- gcc/config/rs6000/linux64.h | 12 +++++------- gcc/config/rs6000/sysv4.h | 9 --------- gcc/testsuite/gcc.dg/simd-3.c | 16 ++++++++++++++++ 3 files changed, 21 insertions(+), 16 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/simd-3.c diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h index 29e1825..18c2db9 100644 --- a/gcc/config/rs6000/linux64.h +++ b/gcc/config/rs6000/linux64.h @@ -228,13 +228,11 @@ extern int dot_symbols; the first field is an FP double, only if in power alignment mode. */ #undef ROUND_TYPE_ALIGN #define ROUND_TYPE_ALIGN(STRUCT, COMPUTED, SPECIFIED) \ - ((TARGET_ALTIVEC && TREE_CODE (STRUCT) == VECTOR_TYPE) \ - ? MAX (MAX ((COMPUTED), (SPECIFIED)), 128) \ - : (TARGET_64BIT \ - && (TREE_CODE (STRUCT) == RECORD_TYPE \ - || TREE_CODE (STRUCT) == UNION_TYPE \ - || TREE_CODE (STRUCT) == QUAL_UNION_TYPE) \ - && TARGET_ALIGN_NATURAL == 0) \ + ((TARGET_64BIT \ + && (TREE_CODE (STRUCT) == RECORD_TYPE \ + || TREE_CODE (STRUCT) == UNION_TYPE \ + || TREE_CODE (STRUCT) == QUAL_UNION_TYPE) \ + && TARGET_ALIGN_NATURAL == 0) \ ? rs6000_special_round_type_align (STRUCT, COMPUTED, SPECIFIED) \ : MAX ((COMPUTED), (SPECIFIED))) diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h index ed5deb1..d18607e 100644 --- a/gcc/config/rs6000/sysv4.h +++ b/gcc/config/rs6000/sysv4.h @@ -335,15 +335,6 @@ do { \ ((TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE) \ ? 128 : COMPUTED) -/* Define this macro as an expression for the alignment of a type - (given by TYPE as a tree node) if the alignment computed in the - usual way is COMPUTED and the alignment explicitly specified was - SPECIFIED. */ -#define ROUND_TYPE_ALIGN(TYPE, COMPUTED, SPECIFIED) \ - ((TARGET_ALTIVEC && TREE_CODE (TYPE) == VECTOR_TYPE) \ - ? MAX (MAX ((COMPUTED), (SPECIFIED)), 128) \ - : MAX (COMPUTED, SPECIFIED)) - #undef BIGGEST_FIELD_ALIGNMENT /* Use ELF style section commands. */ diff --git a/gcc/testsuite/gcc.dg/simd-3.c b/gcc/testsuite/gcc.dg/simd-3.c new file mode 100644 index 0000000..34ad75d --- /dev/null +++ b/gcc/testsuite/gcc.dg/simd-3.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-maltivec" { target powerpc-*-* } } */ + +__attribute__ ((vector_size (2))) signed char v1, v2, v3; +void +one (void) +{ + v1 = v2 + v3; +} + +__attribute__ ((vector_size (8))) signed char v4, v5, v6; +void +two (void) +{ + v4 = v5 + v6; +} -- 2.7.4