omp-low.c (lower_rec_input_clauses): If OMP_CLAUSE_IF has non-constant expression...
authorJakub Jelinek <jakub@redhat.com>
Thu, 16 May 2019 21:44:40 +0000 (23:44 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 16 May 2019 21:44:40 +0000 (23:44 +0200)
commit4e65deeffb7205dc20b70fdfbce51bc6b381f0db
tree04497663af09ac6033253ea43e12935fb81791b0
parentd069df01eda5094cb2c934a7e1567219ba36e511
omp-low.c (lower_rec_input_clauses): If OMP_CLAUSE_IF has non-constant expression...

* omp-low.c (lower_rec_input_clauses): If OMP_CLAUSE_IF
has non-constant expression, force sctx.lane and use two
argument IFN_GOMP_SIMD_LANE instead of single argument.
* tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't DCE
two argument IFN_GOMP_SIMD_LANE without lhs.
* tree-vectorizer.h (struct _loop_vec_info): Add simd_if_cond
member.
(LOOP_VINFO_SIMD_IF_COND, LOOP_REQUIRES_VERSIONING_FOR_SIMD_IF_COND):
Define.
(LOOP_REQUIRES_VERSIONING): Or in
LOOP_REQUIRES_VERSIONING_FOR_SIMD_IF_COND.
* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
simd_if_cond.
(vect_analyze_loop_2): Punt if LOOP_VINFO_SIMD_IF_COND is constant 0.
* tree-vect-loop-manip.c (vect_loop_versioning): Add runtime check
from simd if clause if needed.

* gcc.dg/vect/vect-simd-1.c: New test.
* gcc.dg/vect/vect-simd-2.c: New test.
* gcc.dg/vect/vect-simd-3.c: New test.
* gcc.dg/vect/vect-simd-4.c: New test.

From-SVN: r271298
gcc/ChangeLog
gcc/omp-low.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/vect/vect-simd-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-simd-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-simd-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-simd-4.c [new file with mode: 0644]
gcc/tree-ssa-dce.c
gcc/tree-vect-loop-manip.c
gcc/tree-vect-loop.c
gcc/tree-vectorizer.h