diff options
author | spop <spop@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-11-05 16:50:47 +0000 |
---|---|---|
committer | spop <spop@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-11-05 16:50:47 +0000 |
commit | 1532ec98ed8763b683bf055299ea1c213203dd88 (patch) | |
tree | 04c21f33875e763a6900f3781420822aed5db6ec /gcc/tree-data-ref.h | |
parent | 1da60ab0ff2214c59b6e1b8f8efe8ecee98f9811 (diff) | |
download | gcc-1532ec98ed8763b683bf055299ea1c213203dd88.tar.gz |
* lambda-code.c (lambda_transform_legal_p): Use DDR_NUM_DIST_VECTS
for testing whether the data_dependence_relation contains distance
vectors. Iterate over all distance vectors of the ddr.
* lambda.h: Define a vec of lambda_vector pointers.
* tree-data-ref.c (dump_data_dependence_relation,
dump_data_dependence_direction): Iterate over all distance and
direction vectors of the ddr.
(initialize_data_dependence_relation): Initialize DDR_DIR_VECTS and
DDR_DIST_VECTS.
(build_classic_dist_vector, build_classic_dir_vector): Push a set
of distance/direction vectors instead of a single one.
* tree-data-ref.h (dir_vects, dist_vects): Replace dir/dist
lambda_vectors with a vec of lambda_vectors.
(DDR_DIR_VECT, DDR_DIST_VECT): Redefined as operations on vec.
(DDR_DIR_VECTS, DDR_DIST_VECTS, DDR_NUM_DIR_VECTS,
DDR_NUM_DIST_VECTS): New.
* tree-loop-linear.c (gather_interchange_stats): Test for the
existence of distance vectors only after having checked that there
is a dependence. Iterate over all distance vectors of the ddr.
(linear_transform_loops): Use dump_data_dependence_relation.
* tree-vect-analyze.c (vect_analyze_data_ref_dependence): Test for
distance vectors using DDR_NUM_DIST_VECTS. Iterate over all the
distance vectors of the ddr.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@106530 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-data-ref.h')
-rw-r--r-- | gcc/tree-data-ref.h | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/gcc/tree-data-ref.h b/gcc/tree-data-ref.h index 0677db5251c..5b90e2d5544 100644 --- a/gcc/tree-data-ref.h +++ b/gcc/tree-data-ref.h @@ -217,14 +217,15 @@ struct data_dependence_relation the data_dependence_relation. */ varray_type subscripts; - /* The size of the direction/distance vectors. */ + /* The size of the direction/distance vectors: the depth of the + analyzed loop nest. */ int size_vect; /* The classic direction vector. */ - lambda_vector dir_vect; + VEC(lambda_vector,heap) *dir_vects; /* The classic distance vector. */ - lambda_vector dist_vect; + VEC(lambda_vector,heap) *dist_vects; }; #define DDR_A(DDR) DDR->a @@ -237,8 +238,17 @@ struct data_dependence_relation #define DDR_SUBSCRIPT(DDR, I) VARRAY_GENERIC_PTR (DDR_SUBSCRIPTS (DDR), I) #define DDR_NUM_SUBSCRIPTS(DDR) VARRAY_ACTIVE_SIZE (DDR_SUBSCRIPTS (DDR)) #define DDR_SIZE_VECT(DDR) DDR->size_vect -#define DDR_DIR_VECT(DDR) DDR->dir_vect -#define DDR_DIST_VECT(DDR) DDR->dist_vect + +#define DDR_DIST_VECTS(DDR) ((DDR)->dist_vects) +#define DDR_DIR_VECTS(DDR) ((DDR)->dir_vects) +#define DDR_NUM_DIST_VECTS(DDR) \ + (VEC_length (lambda_vector, DDR_DIST_VECTS (DDR))) +#define DDR_NUM_DIR_VECTS(DDR) \ + (VEC_length (lambda_vector, DDR_DIR_VECTS (DDR))) +#define DDR_DIR_VECT(DDR, I) \ + VEC_index (lambda_vector, DDR_DIR_VECTS (DDR), I) +#define DDR_DIST_VECT(DDR, I) \ + VEC_index (lambda_vector, DDR_DIST_VECTS (DDR), I) |