openmp: Fix handling of non-addressable shared scalars in parallel nested inside...
authorJakub Jelinek <jakub@redhat.com>
Thu, 6 Feb 2020 08:19:08 +0000 (09:19 +0100)
committerJakub Jelinek <jakub@redhat.com>
Thu, 6 Feb 2020 08:19:08 +0000 (09:19 +0100)
commitcb3f06480a17f98579704b9927632627a3814c5c
tree59befb018cc2c77aa27bb3aa9f18bacb94b0e428
parentcf785618ecc90e3f063b99572de48cb91aa5ab5d
openmp: Fix handling of non-addressable shared scalars in parallel nested inside of target [PR93515]

As the following testcase shows, we need to consider even target to be a construct
that forces not to use copy in/out for shared on parallel inside of the target.
E.g. for parallel nested inside another parallel or host teams, we already avoid
copy in/out and we need to treat target the same.

2020-02-06  Jakub Jelinek  <jakub@redhat.com>

PR libgomp/93515
* omp-low.c (use_pointer_for_field): For nested constructs, also
look for map clauses on target construct.
(scan_omp_1_stmt) <case GIMPLE_OMP_TARGET>: Bump temporarily
taskreg_nesting_level.

* testsuite/libgomp.c-c++-common/pr93515.c: New test.
gcc/ChangeLog
gcc/omp-low.c
libgomp/ChangeLog
libgomp/testsuite/libgomp.c-c++-common/pr93515.c [new file with mode: 0644]