diff options
author | Aldy Hernandez <aldyh@gcc.gnu.org> | 2005-06-10 17:04:09 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@gcc.gnu.org> | 2005-06-10 17:04:09 +0000 |
commit | f8103b9fe2ecc084b253fd0780ff5344703dfb7a (patch) | |
tree | 1c76d480cf003fe98dfb32f105e6b4012ed54b2e /gcc | |
parent | 4a96e5c3cd07bf5b4860fdb55510682f9d708e71 (diff) | |
download | gcc-f8103b9fe2ecc084b253fd0780ff5344703dfb7a.zip gcc-f8103b9fe2ecc084b253fd0780ff5344703dfb7a.tar.gz gcc-f8103b9fe2ecc084b253fd0780ff5344703dfb7a.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/rs6000/linux64.h | 12 | ||||
-rw-r--r-- | gcc/config/rs6000/sysv4.h | 9 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/simd-3.c | 16 |
3 files changed, 21 insertions, 16 deletions
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; +} |