summaryrefslogtreecommitdiff
path: root/gcc/tree-vectorizer.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r--gcc/tree-vectorizer.h82
1 files changed, 19 insertions, 63 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
index 87d3138bcaa..5fdca3d6502 100644
--- a/gcc/tree-vectorizer.h
+++ b/gcc/tree-vectorizer.h
@@ -73,6 +73,7 @@ enum verbosity_levels {
REPORT_VECTORIZED_LOOPS,
REPORT_UNVECTORIZED_LOOPS,
REPORT_ALIGNMENT,
+ REPORT_DR_DETAILS,
REPORT_BAD_FORM_LOOPS,
REPORT_OUTER_LOOPS,
REPORT_DETAILS,
@@ -116,27 +117,29 @@ typedef struct _loop_vec_info {
unaligned_dr. */
int peeling_for_alignment;
- /* All data references in the loop that are being written to. */
- varray_type data_ref_writes;
+ /* All data references in the loop. */
+ varray_type datarefs;
- /* All data references in the loop that are being read from. */
- varray_type data_ref_reads;
+ /* All data dependences in the loop. */
+ varray_type ddrs;
+ /* The loop location in the source. */
+ LOC loop_line_number;
} *loop_vec_info;
-/* Access Functions. */
-#define LOOP_VINFO_LOOP(L) (L)->loop
-#define LOOP_VINFO_BBS(L) (L)->bbs
-#define LOOP_VINFO_EXIT_COND(L) (L)->exit_cond
-#define LOOP_VINFO_NITERS(L) (L)->num_iters
-#define LOOP_VINFO_VECTORIZABLE_P(L) (L)->vectorizable
-#define LOOP_VINFO_VECT_FACTOR(L) (L)->vectorization_factor
-#define LOOP_VINFO_DATAREF_WRITES(L) (L)->data_ref_writes
-#define LOOP_VINFO_DATAREF_READS(L) (L)->data_ref_reads
-#define LOOP_VINFO_INT_NITERS(L) (TREE_INT_CST_LOW ((L)->num_iters))
+ /* Access Functions. */
+#define LOOP_VINFO_LOOP(L) (L)->loop
+#define LOOP_VINFO_BBS(L) (L)->bbs
+#define LOOP_VINFO_EXIT_COND(L) (L)->exit_cond
+#define LOOP_VINFO_NITERS(L) (L)->num_iters
+#define LOOP_VINFO_VECTORIZABLE_P(L) (L)->vectorizable
+#define LOOP_VINFO_VECT_FACTOR(L) (L)->vectorization_factor
+#define LOOP_VINFO_DATAREFS(L) (L)->datarefs
+#define LOOP_VINFO_DDRS(L) (L)->ddrs
+#define LOOP_VINFO_INT_NITERS(L) (TREE_INT_CST_LOW ((L)->num_iters))
#define LOOP_PEELING_FOR_ALIGNMENT(L) (L)->peeling_for_alignment
-#define LOOP_VINFO_UNALIGNED_DR(L) (L)->unaligned_dr
-
+#define LOOP_VINFO_UNALIGNED_DR(L) (L)->unaligned_dr
+#define LOOP_VINFO_LOC(L) (L)->loop_line_number
#define LOOP_VINFO_NITERS_KNOWN_P(L) \
(host_integerp ((L)->num_iters,0) \
@@ -192,45 +195,6 @@ typedef struct _stmt_vec_info {
/* Information about the data-ref (access function, etc). */
struct data_reference *data_ref_info;
- /* Aliasing information. This field represents the symbol that
- should be aliased by a pointer holding the address of this data
- reference. If the original data reference was a pointer
- dereference, then this field contains the memory tag that should
- be used by the new vector-pointer. */
- tree memtag;
- struct ptr_info_def *ptr_info;
- subvar_t subvars;
-
- /** The following fields are used to store the information about
- data-reference. {base_address + initial_offset} is the first location
- accessed by data-ref in the loop, and step is the stride of data-ref in
- the loop in bytes;
- e.g.:
-
- Example 1 Example 2
- data-ref a[j].b[i][j] a + 4B (a is int*)
-
- base_address &a a
- initial_offset j_0*D_j + i_0*D_i + C 4
- step D_j 4
-
- data-reference structure info:
- base_name a NULL
- access_fn <access_fns of indexes of b> (0, +, 1)
-
- **/
- /* The above base_address, offset and step. */
- tree base_address;
- tree initial_offset;
- tree step;
-
- /* Alignment information. Whether the base of the data-reference is aligned
- to vectype. */
- bool base_aligned_p;
- /* Alignment information. The offset of the data-reference from its base
- in bytes. */
- tree misalignment;
-
/* List of datarefs that are known to have the same alignment as the dataref
of this stmt. */
VEC(dr_p,heap) *same_align_refs;
@@ -249,14 +213,6 @@ typedef struct _stmt_vec_info {
#define STMT_VINFO_VECTYPE(S) (S)->vectype
#define STMT_VINFO_VEC_STMT(S) (S)->vectorized_stmt
#define STMT_VINFO_DATA_REF(S) (S)->data_ref_info
-#define STMT_VINFO_MEMTAG(S) (S)->memtag
-#define STMT_VINFO_PTR_INFO(S) (S)->ptr_info
-#define STMT_VINFO_SUBVARS(S) (S)->subvars
-#define STMT_VINFO_VECT_DR_BASE_ADDRESS(S)(S)->base_address
-#define STMT_VINFO_VECT_INIT_OFFSET(S) (S)->initial_offset
-#define STMT_VINFO_VECT_STEP(S) (S)->step
-#define STMT_VINFO_VECT_BASE_ALIGNED_P(S) (S)->base_aligned_p
-#define STMT_VINFO_VECT_MISALIGNMENT(S) (S)->misalignment
#define STMT_VINFO_SAME_ALIGN_REFS(S) (S)->same_align_refs
#define STMT_VINFO_DEF_TYPE(S) (S)->def_type