summaryrefslogtreecommitdiff
path: root/gcc/tree-data-ref.h
diff options
context:
space:
mode:
authorspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>2005-11-05 16:50:47 +0000
committerspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>2005-11-05 16:50:47 +0000
commit1532ec98ed8763b683bf055299ea1c213203dd88 (patch)
tree04c21f33875e763a6900f3781420822aed5db6ec /gcc/tree-data-ref.h
parent1da60ab0ff2214c59b6e1b8f8efe8ecee98f9811 (diff)
downloadgcc-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.h20
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)