diff options
author | Steve Ellcey <sje@cup.hp.com> | 2005-06-29 15:34:57 +0000 |
---|---|---|
committer | Steve Ellcey <sje@gcc.gnu.org> | 2005-06-29 15:34:57 +0000 |
commit | a4e8ea7f419d3ebdbc52a86502bf924273984a0f (patch) | |
tree | 108ab57403c614d7414706d5ee2c44f155666064 | |
parent | 63296cb1fedf5f58b90783fab73c90760b5e315b (diff) | |
download | gcc-a4e8ea7f419d3ebdbc52a86502bf924273984a0f.zip gcc-a4e8ea7f419d3ebdbc52a86502bf924273984a0f.tar.gz gcc-a4e8ea7f419d3ebdbc52a86502bf924273984a0f.tar.bz2 |
re PR middle-end/21969 (ICE on float __attribute__((vector_size(2048))))
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
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/tree-vect-transform.c | 2 | ||||
-rw-r--r-- | gcc/tree.c | 2 | ||||
-rw-r--r-- | gcc/tree.h | 7 |
4 files changed, 17 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 151a7c8..0e44859 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c index 852ff19..7d15309 100644 --- a/gcc/tree-vect-transform.c +++ b/gcc/tree-vect-transform.c @@ -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)) @@ -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); @@ -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. */ |