diff options
author | sje <sje@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-06-29 15:34:57 +0000 |
---|---|---|
committer | sje <sje@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-06-29 15:34:57 +0000 |
commit | 99d38b9ec2f11520812d71b9b0c29f5617fdf6cc (patch) | |
tree | 108ab57403c614d7414706d5ee2c44f155666064 | |
parent | 119114cbc5595dc4dcffb358bbb94719eed724ee (diff) | |
download | gcc-99d38b9ec2f11520812d71b9b0c29f5617fdf6cc.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101423 138bc75d-0d04-0410-961f-82ee72b054a4
-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 151a7c83b5b..0e44859bc7b 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 852ff19033c..7d153099c95 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)) diff --git a/gcc/tree.c b/gcc/tree.c index e7565e2cd74..0088a9b2216 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -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); diff --git a/gcc/tree.h b/gcc/tree.h index a2e9a86f886..191ba133141 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -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. */ |