diff options
author | Ira Rosen <ira.rosen@linaro.org> | 2011-03-24 08:23:39 +0000 |
---|---|---|
committer | Ira Rosen <irar@gcc.gnu.org> | 2011-03-24 08:23:39 +0000 |
commit | bfe068c3d311b07208084f3259929187f29ed37b (patch) | |
tree | afb8a3198cdee843553c12f114920b4078828339 /gcc/tree-vect-data-refs.c | |
parent | 3137991dfc4e0b6023c4b75b2ae1eb86bea32241 (diff) | |
download | gcc-bfe068c3d311b07208084f3259929187f29ed37b.zip gcc-bfe068c3d311b07208084f3259929187f29ed37b.tar.gz gcc-bfe068c3d311b07208084f3259929187f29ed37b.tar.bz2 |
invoke.texi (max-stores-to-sink): Document.
* doc/invoke.texi (max-stores-to-sink): Document.
* params.h (MAX_STORES_TO_SINK): Define.
* opts.c (finish_options): Set MAX_STORES_TO_SINK to 0
if either vectorization or if-conversion is disabled.
* tree-data-ref.c (dr_equal_offsets_p1): Moved and renamed from
tree-vect-data-refs.c vect_equal_offsets.
(dr_equal_offsets_p): New function.
(find_data_references_in_bb): Remove static.
* tree-data-ref.h (find_data_references_in_bb): Declare.
(dr_equal_offsets_p): Likewise.
* tree-vect-data-refs.c (vect_equal_offsets): Move to
tree-data-ref.c.
(vect_drs_dependent_in_basic_block): Update calls to
vect_equal_offsets.
(vect_check_interleaving): Likewise.
* tree-ssa-phiopt.c: Include cfgloop.h and tree-data-ref.h.
(cond_if_else_store_replacement): Rename to...
(cond_if_else_store_replacement_1): ... this. Change arguments
and documentation.
(cond_if_else_store_replacement): New function.
* Makefile.in (tree-ssa-phiopt.o): Adjust dependencies.
* params.def (PARAM_MAX_STORES_TO_SINK): Define.
From-SVN: r171381
Diffstat (limited to 'gcc/tree-vect-data-refs.c')
-rw-r--r-- | gcc/tree-vect-data-refs.c | 37 |
1 files changed, 2 insertions, 35 deletions
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index 2c9936c..d4ba704 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.c @@ -289,39 +289,6 @@ vect_update_interleaving_chain (struct data_reference *drb, } } - -/* Function vect_equal_offsets. - - Check if OFFSET1 and OFFSET2 are identical expressions. */ - -static bool -vect_equal_offsets (tree offset1, tree offset2) -{ - bool res; - - STRIP_NOPS (offset1); - STRIP_NOPS (offset2); - - if (offset1 == offset2) - return true; - - if (TREE_CODE (offset1) != TREE_CODE (offset2) - || (!BINARY_CLASS_P (offset1) && !UNARY_CLASS_P (offset1))) - return false; - - res = vect_equal_offsets (TREE_OPERAND (offset1, 0), - TREE_OPERAND (offset2, 0)); - - if (!res || !BINARY_CLASS_P (offset1)) - return res; - - res = vect_equal_offsets (TREE_OPERAND (offset1, 1), - TREE_OPERAND (offset2, 1)); - - return res; -} - - /* Check dependence between DRA and DRB for basic block vectorization. If the accesses share same bases and offsets, we can compare their initial constant offsets to decide whether they differ or not. In case of a read- @@ -352,7 +319,7 @@ vect_drs_dependent_in_basic_block (struct data_reference *dra, || TREE_CODE (DR_BASE_ADDRESS (drb)) != ADDR_EXPR || TREE_OPERAND (DR_BASE_ADDRESS (dra), 0) != TREE_OPERAND (DR_BASE_ADDRESS (drb),0))) - || !vect_equal_offsets (DR_OFFSET (dra), DR_OFFSET (drb))) + || !dr_equal_offsets_p (dra, drb)) return true; /* Check the types. */ @@ -402,7 +369,7 @@ vect_check_interleaving (struct data_reference *dra, || TREE_CODE (DR_BASE_ADDRESS (drb)) != ADDR_EXPR || TREE_OPERAND (DR_BASE_ADDRESS (dra), 0) != TREE_OPERAND (DR_BASE_ADDRESS (drb),0))) - || !vect_equal_offsets (DR_OFFSET (dra), DR_OFFSET (drb)) + || !dr_equal_offsets_p (dra, drb) || !tree_int_cst_compare (DR_INIT (dra), DR_INIT (drb)) || DR_IS_READ (dra) != DR_IS_READ (drb)) return false; |