aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@gcc.gnu.org>2005-06-10 17:04:09 +0000
committerAldy Hernandez <aldyh@gcc.gnu.org>2005-06-10 17:04:09 +0000
commitf8103b9fe2ecc084b253fd0780ff5344703dfb7a (patch)
tree1c76d480cf003fe98dfb32f105e6b4012ed54b2e /gcc
parent4a96e5c3cd07bf5b4860fdb55510682f9d708e71 (diff)
downloadgcc-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.h12
-rw-r--r--gcc/config/rs6000/sysv4.h9
-rw-r--r--gcc/testsuite/gcc.dg/simd-3.c16
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;
+}