openmp: allocate clause vs. *reduction array sections [PR97670]
authorJakub Jelinek <jakub@redhat.com>
Wed, 4 Nov 2020 08:37:22 +0000 (09:37 +0100)
committerJakub Jelinek <jakub@redhat.com>
Wed, 4 Nov 2020 09:02:01 +0000 (10:02 +0100)
commit9649031577028310e853025672c71dfb500494f0
tree77628998c8b1cfcf5d767872248ff33542eff532
parent7988c76ebacd66741110886c3dc7a4f0245ba9b5
openmp: allocate clause vs. *reduction array sections [PR97670]

This patch finds the base expression of reduction array sections and uses it
in checks whether allocate clause lists only variables that have been privatized.
Also fixes a pasto that caused an ICE.

2020-11-04  Jakub Jelinek  <jakub@redhat.com>

PR c++/97670
gcc/c-family/
* c-omp.c (c_omp_split_clauses): Look through array reductions to find
underlying decl to clear in the allocate_head bitmap.
gcc/c/
* c-typeck.c (c_finish_omp_clauses): Look through array reductions to
find underlying decl to clear in the aligned_head bitmap.
gcc/cp/
* semantics.c (finish_omp_clauses): Look through array reductions to
find underlying decl to clear in the aligned_head bitmap.  Use
DECL_UID (t) instead of DECL_UID (OMP_CLAUSE_DECL (c)) when clearing
in the bitmap.  Only diagnose errors about allocate vars not being
privatized on the same construct on allocate clause if it has
a DECL_P OMP_CLAUSE_DECL.
gcc/testsuite/
* c-c++-common/gomp/allocate-4.c: New test.
* g++.dg/gomp/allocate-2.C: New test.
* g++.dg/gomp/allocate-3.C: New test.
gcc/c-family/c-omp.c
gcc/c/c-typeck.c
gcc/cp/semantics.c
gcc/testsuite/c-c++-common/gomp/allocate-4.c [new file with mode: 0644]
gcc/testsuite/g++.dg/gomp/allocate-2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/gomp/allocate-3.C [new file with mode: 0644]