diff options
author | Yuri Rumyantsev <ysrumyan@gmail.com> | 2015-06-01 17:15:31 +0000 |
---|---|---|
committer | Ilya Enkovich <ienkovich@gcc.gnu.org> | 2015-06-01 17:15:31 +0000 |
commit | c134cf2ab8e329fecda56f61cd977388a200a3d5 (patch) | |
tree | 66f49cb054797138841a20fc3f9b89519ca2f3af /gcc/tree-vect-data-refs.c | |
parent | f17339ceb3b4a8a5327acf8b0c682f74d3b3d337 (diff) | |
download | gcc-c134cf2ab8e329fecda56f61cd977388a200a3d5.zip gcc-c134cf2ab8e329fecda56f61cd977388a200a3d5.tar.gz gcc-c134cf2ab8e329fecda56f61cd977388a200a3d5.tar.bz2 |
tree-vect-data-refs.c (vect_analyze_data_ref_access): Allow consecutive accesses within outer-loop with force_vectorize for...
gcc/
* tree-vect-data-refs.c (vect_analyze_data_ref_access): Allow
consecutive accesses within outer-loop with force_vectorize
for references with zero step in inner-loop.
gcc/testsuite/
* gcc.dg/vect/vect-outer-simd-1.c: New test.
From-SVN: r223993
Diffstat (limited to 'gcc/tree-vect-data-refs.c')
-rw-r--r-- | gcc/tree-vect-data-refs.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index eb35d62..5c3fa3d 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.c @@ -2287,18 +2287,22 @@ vect_analyze_data_ref_access (struct data_reference *dr) return false; } - /* Allow invariant loads in not nested loops. */ + /* Allow loads with zero step in inner-loop vectorization. */ if (loop_vinfo && integer_zerop (step)) { GROUP_FIRST_ELEMENT (vinfo_for_stmt (stmt)) = NULL; - if (nested_in_vect_loop_p (loop, stmt)) + if (!nested_in_vect_loop_p (loop, stmt)) + return DR_IS_READ (dr); + /* Allow references with zero step for outer loops marked + with pragma omp simd only - it guarantees absence of + loop-carried dependencies between inner loop iterations. */ + if (!loop->force_vectorize) { if (dump_enabled_p ()) dump_printf_loc (MSG_NOTE, vect_location, "zero step in inner loop of nest\n"); return false; } - return DR_IS_READ (dr); } if (loop && nested_in_vect_loop_p (loop, stmt)) |