aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vectorizer.h
diff options
context:
space:
mode:
authorIra Rosen <irar@il.ibm.com>2007-01-21 09:22:56 +0000
committerIra Rosen <irar@gcc.gnu.org>2007-01-21 09:22:56 +0000
commit6004caaf4dd656f955034b444a38a3a886a035c1 (patch)
tree05e8577ec4efe6bacd28333f67700b524ca9e2a3 /gcc/tree-vectorizer.h
parent52b213f385400a4f4adfa2a167fe8ec6303e4ca7 (diff)
downloadgcc-6004caaf4dd656f955034b444a38a3a886a035c1.zip
gcc-6004caaf4dd656f955034b444a38a3a886a035c1.tar.gz
gcc-6004caaf4dd656f955034b444a38a3a886a035c1.tar.bz2
tree-vectorizer.h (struct _stmt_vec_info): Add new field read_write_dep and macros for its access.
* tree-vectorizer.h (struct _stmt_vec_info): Add new field read_write_dep and macros for its access. * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field. * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove argument, call vect_check_interleaving for every independent pair of data-refs. Mark loads that access the same memory location as a store in the loop. (vect_check_dependences): Remove. (vect_analyze_data_ref_dependences): Remove vect_check_dependences call, fix the call to vect_analyze_data_ref_dependence. (vect_analyze_data_ref_access): For statements that access the same data-ref, check that they are not stores; for loads, check that there is no store that access the same location. From-SVN: r121026
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r--gcc/tree-vectorizer.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
index f323403..a13ee1e 100644
--- a/gcc/tree-vectorizer.h
+++ b/gcc/tree-vectorizer.h
@@ -252,6 +252,9 @@ typedef struct _stmt_vec_info {
/* In case that two or more stmts share data-ref, this is the pointer to the
previously detected stmt with the same dr. */
tree same_dr_stmt;
+ /* For loads only, if there is a store with the same location, this field is
+ TRUE. */
+ bool read_write_dep;
} *stmt_vec_info;
/* Access Functions. */
@@ -273,6 +276,7 @@ typedef struct _stmt_vec_info {
#define STMT_VINFO_DR_GROUP_STORE_COUNT(S) (S)->store_count
#define STMT_VINFO_DR_GROUP_GAP(S) (S)->gap
#define STMT_VINFO_DR_GROUP_SAME_DR_STMT(S)(S)->same_dr_stmt
+#define STMT_VINFO_DR_GROUP_READ_WRITE_DEPENDENCE(S) (S)->read_write_dep
#define DR_GROUP_FIRST_DR(S) (S)->first_dr
#define DR_GROUP_NEXT_DR(S) (S)->next_dr
@@ -280,6 +284,7 @@ typedef struct _stmt_vec_info {
#define DR_GROUP_STORE_COUNT(S) (S)->store_count
#define DR_GROUP_GAP(S) (S)->gap
#define DR_GROUP_SAME_DR_STMT(S) (S)->same_dr_stmt
+#define DR_GROUP_READ_WRITE_DEPENDENCE(S) (S)->read_write_dep
#define STMT_VINFO_RELEVANT_P(S) ((S)->relevant != vect_unused_in_loop)