re PR middle-end/17961 (ICE for operation on small vector with altivec enabled)
authorAldy Hernandez <aldyh@gcc.gnu.org>
Fri, 10 Jun 2005 17:04:09 +0000 (17:04 +0000)
committerAldy Hernandez <aldyh@gcc.gnu.org>
Fri, 10 Jun 2005 17:04:09 +0000 (17:04 +0000)
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
gcc/config/rs6000/sysv4.h
gcc/testsuite/gcc.dg/simd-3.c [new file with mode: 0644]

index 29e1825..18c2db9 100644 (file)
@@ -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)))
 
index ed5deb1..d18607e 100644 (file)
@@ -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 (file)
index 0000000..34ad75d
--- /dev/null
@@ -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;
+}