diff options
author | irar <irar@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-10-23 12:13:49 +0000 |
---|---|---|
committer | irar <irar@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-10-23 12:13:49 +0000 |
commit | 805085717608a45a993649e0f7e3de2b6bf427ef (patch) | |
tree | 819bbf0d382a16d3881ea1c2cb0ed7c144a1f6f5 /gcc/tree-vect-slp.c | |
parent | 2ba552cb3a716157f09e299b707446a5cf0d9545 (diff) | |
download | gcc-805085717608a45a993649e0f7e3de2b6bf427ef.tar.gz |
PR tree-optimization/50819
* tree-vectorizer.h (vect_analyze_data_ref_dependences): Remove
the last argument.
* tree-vect-loop.c (vect_analyze_loop_2): Update call to
vect_analyze_data_ref_dependences.
* tree-vect-data-refs.c (vect_analyze_data_ref_dependence):
Remove the last argument. Check load-after-store dependence
for unknown dependencies in basic blocks.
(vect_analyze_data_ref_dependences): Update call to
vect_analyze_data_ref_dependences.
* tree-vect-patterns.c (vect_recog_widen_shift_pattern): Fix
typo.
* tree-vect-slp.c (vect_bb_vectorizable_with_dependencies):
Remove.
(vect_slp_analyze_bb_1): Update call to
vect_analyze_data_ref_dependences. Don't call
vect_bb_vectorizable_with_dependencies.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180334 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-vect-slp.c')
-rw-r--r-- | gcc/tree-vect-slp.c | 45 |
1 files changed, 2 insertions, 43 deletions
diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index f131f1eec23..f75817b985f 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -1706,43 +1706,6 @@ vect_slp_analyze_operations (bb_vec_info bb_vinfo) return true; } -/* Check if loads and stores are mixed in the basic block (in that - case if we are not sure that the accesses differ, we can't vectorize the - basic block). Also return FALSE in case that there is statement marked as - not vectorizable. */ - -static bool -vect_bb_vectorizable_with_dependencies (bb_vec_info bb_vinfo) -{ - basic_block bb = BB_VINFO_BB (bb_vinfo); - gimple_stmt_iterator si; - bool detected_store = false; - gimple stmt; - struct data_reference *dr; - - for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si)) - { - stmt = gsi_stmt (si); - - /* We can't allow not analyzed statements, since they may contain data - accesses. */ - if (!STMT_VINFO_VECTORIZABLE (vinfo_for_stmt (stmt))) - return false; - - if (!STMT_VINFO_DATA_REF (vinfo_for_stmt (stmt))) - continue; - - dr = STMT_VINFO_DATA_REF (vinfo_for_stmt (stmt)); - if (DR_IS_READ (dr) && detected_store) - return false; - - if (!DR_IS_READ (dr)) - detected_store = true; - } - - return true; -} - /* Check if vectorization of the basic block is profitable. */ static bool @@ -1823,7 +1786,6 @@ vect_slp_analyze_bb_1 (basic_block bb) int i; int min_vf = 2; int max_vf = MAX_VECTORIZATION_FACTOR; - bool data_dependence_in_bb = false; bb_vinfo = new_bb_vec_info (bb); if (!bb_vinfo) @@ -1850,11 +1812,8 @@ vect_slp_analyze_bb_1 (basic_block bb) return NULL; } - if (!vect_analyze_data_ref_dependences (NULL, bb_vinfo, &max_vf, - &data_dependence_in_bb) - || min_vf > max_vf - || (data_dependence_in_bb - && !vect_bb_vectorizable_with_dependencies (bb_vinfo))) + if (!vect_analyze_data_ref_dependences (NULL, bb_vinfo, &max_vf) + || min_vf > max_vf) { if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS)) fprintf (vect_dump, "not vectorized: unhandled data dependence " |