omp-low.c (struct omp_context): Add for_simd_scan_phase member.
authorJakub Jelinek <jakub@redhat.com>
Sat, 6 Jul 2019 07:53:48 +0000 (09:53 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sat, 6 Jul 2019 07:53:48 +0000 (09:53 +0200)
commit1f52d1a8b52ace2922eb9b97e2c49d2ee7d27410
treec0fb4cdd9e6e30b44977e0712e7550965c100e2e
parent5d1212877acd3f7a2a6ff23f91dc1a0ed106fdd4
omp-low.c (struct omp_context): Add for_simd_scan_phase member.

* omp-low.c (struct omp_context): Add for_simd_scan_phase member.
(maybe_lookup_ctx): Add forward declaration.
(omp_find_scan): Likewise.  Walk into body of simd if composited
with worksharing loop.
(scan_omp_simd_scan): New function.
(scan_omp_1_stmt): Call it.
(lower_rec_simd_input_clauses): Don't create rvar nor rvar2 if
ctx->for_simd_scan_phase.
(lower_rec_input_clauses): Do much less work for inscan reductions
in ctx->for_simd_scan_phase is_simd regions.
(lower_omp_scan): Set is_simd also on simd constructs composited
with worksharing loop, unless ctx->for_simd_scan_phase.  Never emit
a sorry message.  Don't change GIMPLE_OMP_SCAN stmts into nops and
emit their body after in simd constructs composited with worksharing
loop.
(lower_omp_for_scan): Handle worksharing loop composited with simd.

* c-c++-common/gomp/scan-4.c: Don't expect sorry message.

* testsuite/libgomp.c/scan-11.c: New test.
* testsuite/libgomp.c/scan-12.c: New test.
* testsuite/libgomp.c/scan-13.c: New test.
* testsuite/libgomp.c/scan-14.c: New test.
* testsuite/libgomp.c/scan-15.c: New test.
* testsuite/libgomp.c/scan-16.c: New test.
* testsuite/libgomp.c/scan-17.c: New test.
* testsuite/libgomp.c/scan-18.c: New test.
* testsuite/libgomp.c++/scan-9.C: New test.
* testsuite/libgomp.c++/scan-10.C: New test.
* testsuite/libgomp.c++/scan-11.C: New test.
* testsuite/libgomp.c++/scan-12.C: New test.
* testsuite/libgomp.c++/scan-13.C: New test.
* testsuite/libgomp.c++/scan-14.C: New test.
* testsuite/libgomp.c++/scan-15.C: New test.
* testsuite/libgomp.c++/scan-16.C: New test.

From-SVN: r273157
21 files changed:
gcc/ChangeLog
gcc/omp-low.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/gomp/scan-4.c
libgomp/ChangeLog
libgomp/testsuite/libgomp.c++/scan-10.C [new file with mode: 0644]
libgomp/testsuite/libgomp.c++/scan-11.C [new file with mode: 0644]
libgomp/testsuite/libgomp.c++/scan-12.C [new file with mode: 0644]
libgomp/testsuite/libgomp.c++/scan-13.C [new file with mode: 0644]
libgomp/testsuite/libgomp.c++/scan-14.C [new file with mode: 0644]
libgomp/testsuite/libgomp.c++/scan-15.C [new file with mode: 0644]
libgomp/testsuite/libgomp.c++/scan-16.C [new file with mode: 0644]
libgomp/testsuite/libgomp.c++/scan-9.C [new file with mode: 0644]
libgomp/testsuite/libgomp.c/scan-11.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/scan-12.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/scan-13.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/scan-14.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/scan-15.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/scan-16.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/scan-17.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/scan-18.c [new file with mode: 0644]