re PR middle-end/21969 (ICE on float __attribute__((vector_size(2048))))
authorSteve Ellcey <sje@cup.hp.com>
Wed, 29 Jun 2005 15:34:57 +0000 (15:34 +0000)
committerSteve Ellcey <sje@gcc.gnu.org>
Wed, 29 Jun 2005 15:34:57 +0000 (15:34 +0000)
PR middle-end/21969
* tree.h (TYPE_VECTOR_SUBPARTS): Change to shift expression.
(SET_TYPE_VECTOR_SUBPARTS): New.
* tree.c (make_vector_type): Replace TYPE_VECTOR_SUBPARTS with
SET_TYPE_VECTOR_SUBPARTS.
* tree-vect-transform.c (vect_transform_loop): Add cast.

From-SVN: r101423

gcc/ChangeLog
gcc/tree-vect-transform.c
gcc/tree.c
gcc/tree.h

index 151a7c83b5b79c903cfd18755052b9e039b5aad3..0e44859bc7b722e65ce84fca71dfbb5a8ea2ec7e 100644 (file)
@@ -1,3 +1,12 @@
+2005-06-29  Steve Ellcey  <sje@cup.hp.com>
+
+       PR middle-end/21969
+       * tree.h (TYPE_VECTOR_SUBPARTS): Change to shift expression.
+       (SET_TYPE_VECTOR_SUBPARTS): New.
+       * tree.c (make_vector_type): Replace TYPE_VECTOR_SUBPARTS with
+       SET_TYPE_VECTOR_SUBPARTS.
+       * tree-vect-transform.c (vect_transform_loop): Add cast.
+
 2005-06-29  Andreas Krebbel  <krebbel1@de.ibm.com>
 
        * config/s390/s390.c (s390_decompose_address): Accept invalid
index 852ff19033c6f545090d6398a46248c594b67ea9..7d153099c955bfb8bbd2adbb134bb8ede6c584b2 100644 (file)
@@ -2771,7 +2771,7 @@ vect_transform_loop (loop_vec_info loop_vinfo,
                     units and no inner unrolling is necessary.  */
          gcc_assert 
                (TYPE_VECTOR_SUBPARTS (STMT_VINFO_VECTYPE (stmt_info))
-                == vectorization_factor);
+                == (unsigned HOST_WIDE_INT) vectorization_factor);
 
          /* -------- vectorize statement ------------ */
          if (vect_print_dump_info (REPORT_DETAILS, UNKNOWN_LOC))
index e7565e2cd7433b0991d4a2a7df8ff0c0b520ea88..0088a9b221615efeb54f4df936ace91943d14fd9 100644 (file)
@@ -5710,7 +5710,7 @@ make_vector_type (tree innertype, int nunits, enum machine_mode mode)
   tree t = make_node (VECTOR_TYPE);
 
   TREE_TYPE (t) = TYPE_MAIN_VARIANT (innertype);
-  TYPE_VECTOR_SUBPARTS (t) = nunits;
+  SET_TYPE_VECTOR_SUBPARTS (t, nunits);
   TYPE_MODE (t) = mode;
   TYPE_READONLY (t) = TYPE_READONLY (innertype);
   TYPE_VOLATILE (t) = TYPE_VOLATILE (innertype);
index a2e9a86f886a52346aef922d429ddb3e669a7f15..191ba13314184dcfd99dd84487f1ecd313aa7d50 100644 (file)
@@ -1667,7 +1667,12 @@ struct tree_block GTY(())
 
 /* For a VECTOR_TYPE, this is the number of sub-parts of the vector.  */
 #define TYPE_VECTOR_SUBPARTS(VECTOR_TYPE) \
-  (VECTOR_TYPE_CHECK (VECTOR_TYPE)->type.precision)
+  (((unsigned HOST_WIDE_INT) 1) \
+   << VECTOR_TYPE_CHECK (VECTOR_TYPE)->type.precision)
+
+/* Set precision to n when we have 2^n sub-parts of the vector.  */
+#define SET_TYPE_VECTOR_SUBPARTS(VECTOR_TYPE, X) \
+  (VECTOR_TYPE_CHECK (VECTOR_TYPE)->type.precision = exact_log2 (X))
 
 /* Indicates that objects of this type must be initialized by calling a
    function when they are created.  */