Don't create location wrapper nodes within OpenACC clauses
authorThomas Schwinge <thomas@codesourcery.com>
Wed, 25 Nov 2020 19:36:55 +0000 (20:36 +0100)
committerThomas Schwinge <thomas@codesourcery.com>
Thu, 26 Nov 2020 09:02:38 +0000 (10:02 +0100)
commitc0c7270cc4efd896fe99f8ad5409dbef089a407f
tree54dc9d712d00e4e5219fe74191a811de27973805
parentacdf30d66cac11757e95541aa35f5ce97de29f63
Don't create location wrapper nodes within OpenACC clauses

This fixes a GCC 11, 10, 9 regression introduced by commit
dfd7fdca2ac17d8b823a16700525824ca312ade0 (Subversion r267272) "C++: more
location wrapper nodes (PR c++/43064, PR c++/43486)".  But: this isn't
intending to blame David, because back then, the problem hasn't been visible in
the testsuite (or else I'm sure would've been addressed right away) because of
our all dear friend: missing testsuite coverage.  Thus, for GCC 8, I'm likewise
enhancing the testsuite, without the C++ front end code changes.

I actually had presumed that there may be an issue for OpenACC:
<http://mid.mail-archive.com/874lb9qr2u.fsf@euler.schwinge.homeip.net>, so here
we are, two years (and many "wasted" hours...) later...

gcc/cp/
* parser.c (cp_parser_omp_var_list_no_open): Assert that array
section's 'low_bound', 'length' are not location wrapper nodes.
(cp_parser_oacc_all_clauses, cp_parser_oacc_cache): Instantiate
'auto_suppress_location_wrappers'.
gcc/testsuite/
* c-c++-common/goacc/cache-3-1.c: New.
* c-c++-common/goacc/cache-3-2.c: Likewise.
* c-c++-common/goacc/data-clause-1.c: Likewise.
* c-c++-common/goacc/data-clause-2.c: Likewise.
* c-c++-common/gomp/map-1.c: Adjust.
* c-c++-common/gomp/map-2.c: Likewise.
* g++.dg/goacc/cache-3-1.C: New.
* g++.dg/goacc/cache-3-2.C: Likewise.
* g++.dg/goacc/data-clause-1.C: Likewise.
* g++.dg/goacc/data-clause-2.C: Likewise.
* g++.dg/gomp/map-1.C: Adjust.
* g++.dg/gomp/map-2.C: Likewise.

Reported-by: Sandra Loosemore <sandra@codesourcery.com>
13 files changed:
gcc/cp/parser.c
gcc/testsuite/c-c++-common/goacc/cache-3-1.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/goacc/cache-3-2.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/goacc/data-clause-1.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/goacc/data-clause-2.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/gomp/map-1.c
gcc/testsuite/c-c++-common/gomp/map-2.c
gcc/testsuite/g++.dg/goacc/cache-3-1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/goacc/cache-3-2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/goacc/data-clause-1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/goacc/data-clause-2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/gomp/map-1.C
gcc/testsuite/g++.dg/gomp/map-2.C