diff options
Diffstat (limited to 'gcc/tree-data-ref.h')
-rw-r--r-- | gcc/tree-data-ref.h | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/gcc/tree-data-ref.h b/gcc/tree-data-ref.h index 1f996f43097..c5976f982dc 100644 --- a/gcc/tree-data-ref.h +++ b/gcc/tree-data-ref.h @@ -107,6 +107,10 @@ struct data_reference enum data_ref_type type; }; +typedef struct data_reference *data_reference_p; +DEF_VEC_P(data_reference_p); +DEF_VEC_ALLOC_P (data_reference_p, heap); + #define DR_STMT(DR) (DR)->stmt #define DR_REF(DR) (DR)->ref #define DR_BASE_OBJECT(DR) (DR)->object_info.base_object @@ -181,6 +185,10 @@ struct subscript tree distance; }; +typedef struct subscript *subscript_p; +DEF_VEC_P(subscript_p); +DEF_VEC_ALLOC_P (subscript_p, heap); + #define SUB_CONFLICTS_IN_A(SUB) SUB->conflicting_iterations_in_a #define SUB_CONFLICTS_IN_B(SUB) SUB->conflicting_iterations_in_b #define SUB_LAST_CONFLICT(SUB) SUB->last_conflict @@ -219,16 +227,16 @@ struct data_dependence_relation /* For each subscript in the dependence test, there is an element in this array. This is the attribute that labels the edge A->B of the data_dependence_relation. */ - varray_type subscripts; + VEC (subscript_p, heap) *subscripts; /* The analyzed loop nest. */ VEC (loop_p, heap) *loop_nest; /* The classic direction vector. */ - VEC(lambda_vector,heap) *dir_vects; + VEC (lambda_vector, heap) *dir_vects; /* The classic distance vector. */ - VEC(lambda_vector,heap) *dist_vects; + VEC (lambda_vector, heap) *dist_vects; }; typedef struct data_dependence_relation *ddr_p; @@ -240,10 +248,8 @@ DEF_VEC_ALLOC_P(ddr_p,heap); #define DDR_AFFINE_P(DDR) DDR->affine_p #define DDR_ARE_DEPENDENT(DDR) DDR->are_dependent #define DDR_SUBSCRIPTS(DDR) DDR->subscripts -#define DDR_SUBSCRIPTS_VECTOR_INIT(DDR, N) \ - VARRAY_GENERIC_PTR_INIT (DDR_SUBSCRIPTS (DDR), N, "subscripts_vector"); -#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_SUBSCRIPT(DDR, I) VEC_index (subscript_p, DDR_SUBSCRIPTS (DDR), I) +#define DDR_NUM_SUBSCRIPTS(DDR) VEC_length (subscript_p, DDR_SUBSCRIPTS (DDR)) #define DDR_LOOP_NEST(DDR) DDR->loop_nest /* The size of the direction/distance vectors: the number of loops in @@ -263,29 +269,32 @@ DEF_VEC_ALLOC_P(ddr_p,heap); -extern tree find_data_references_in_loop (struct loop *, varray_type *); +extern tree find_data_references_in_loop (struct loop *, + VEC (data_reference_p, heap) *); extern void compute_data_dependences_for_loop (struct loop *, bool, - varray_type *, varray_type *); + VEC (data_reference_p, heap) *, + VEC (ddr_p, heap) *); extern void print_direction_vector (FILE *, lambda_vector, int); extern void print_dir_vectors (FILE *, VEC (lambda_vector, heap) *, int); extern void print_dist_vectors (FILE *, VEC (lambda_vector, heap) *, int); extern void dump_subscript (FILE *, struct subscript *); -extern void dump_ddrs (FILE *, varray_type); -extern void dump_dist_dir_vectors (FILE *, varray_type); +extern void dump_ddrs (FILE *, VEC (ddr_p, heap) *); +extern void dump_dist_dir_vectors (FILE *, VEC (ddr_p, heap) *); extern void dump_data_reference (FILE *, struct data_reference *); -extern void dump_data_references (FILE *, varray_type); +extern void dump_data_references (FILE *, VEC (data_reference_p, heap) *); extern void debug_data_dependence_relation (struct data_dependence_relation *); extern void dump_data_dependence_relation (FILE *, struct data_dependence_relation *); -extern void dump_data_dependence_relations (FILE *, varray_type); +extern void dump_data_dependence_relations (FILE *, VEC (ddr_p, heap) *); extern void dump_data_dependence_direction (FILE *, enum data_dependence_direction); extern void free_dependence_relation (struct data_dependence_relation *); -extern void free_dependence_relations (varray_type); -extern void free_data_refs (varray_type); +extern void free_dependence_relations (VEC (ddr_p, heap) *); +extern void free_data_refs (VEC (data_reference_p, heap) *); extern struct data_reference *analyze_array (tree, tree, bool); extern void estimate_iters_using_array (tree, tree); + /* Return the index of the variable VAR in the LOOP_NEST array. */ static inline int @@ -302,6 +311,7 @@ index_in_loop_nest (int var, VEC (loop_p, heap) *loop_nest) return var_index; } - +/* In lambda-code.c */ +bool lambda_transform_legal_p (lambda_trans_matrix, int, VEC (ddr_p, heap) *); #endif /* GCC_TREE_DATA_REF_H */ |