From: Jakub Jelinek Date: Mon, 8 Jul 2019 22:08:27 +0000 (+0000) Subject: Fix ICE in cp_omp_mappable_type_1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c68bbcbc64200458e9992cfc64edb31c834ecf70;p=thirdparty%2Fgcc.git Fix ICE in cp_omp_mappable_type_1 2019-07-09 Andrew Stubbs Backport from mainline 2019-07-08 Jakub Jelinek PR c++/91110 * decl2.c (cp_omp_mappable_type_1): Don't emit any note for error_mark_node type. * g++.dg/gomp/pr91110.C: New test. (cherry picked from openacc-gcc-9-branch commit d6b6e2be68c197f41e19350df017685e652893ff) --- diff --git a/gcc/cp/ChangeLog.omp b/gcc/cp/ChangeLog.omp index 11ed1e729ef3..8306bd04bc32 100644 --- a/gcc/cp/ChangeLog.omp +++ b/gcc/cp/ChangeLog.omp @@ -1,3 +1,12 @@ +2019-07-09 Andrew Stubbs + + Backport from mainline: + 2019-07-08 Jakub Jelinek + + PR c++/91110 + * decl2.c (cp_omp_mappable_type_1): Don't emit any note for + error_mark_node type. + 2019-07-04 Andrew Stubbs Backport from mainline: diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index b10f7306f34b..37a95b9f5b7f 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -1416,7 +1416,7 @@ cp_omp_mappable_type_1 (tree type, bool notes) /* Mappable type has to be complete. */ if (type == error_mark_node || !COMPLETE_TYPE_P (type)) { - if (notes) + if (notes && type != error_mark_node) { tree decl = TYPE_MAIN_DECL (type); inform ((decl ? DECL_SOURCE_LOCATION (decl) : input_location), diff --git a/gcc/testsuite/ChangeLog.omp b/gcc/testsuite/ChangeLog.omp index fc20b357f3f0..deddcc50ce15 100644 --- a/gcc/testsuite/ChangeLog.omp +++ b/gcc/testsuite/ChangeLog.omp @@ -1,3 +1,11 @@ +2019-07-09 Andrew Stubbs + + Backport from mainline: + 2019-07-08 Jakub Jelinek + + PR c++/91110 + * g++.dg/gomp/pr91110.C: New test. + 2019-07-04 Andrew Stubbs Backport from mainline: diff --git a/gcc/testsuite/g++.dg/gomp/pr91110.C b/gcc/testsuite/g++.dg/gomp/pr91110.C new file mode 100644 index 000000000000..332c99a13fce --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/pr91110.C @@ -0,0 +1,11 @@ +// PR c++/91110 +// { dg-do compile } + +void +foo () +{ + X b[2]; // { dg-error "'X' was not declared in this scope" } + b[0] = 1; // { dg-error "'b' was not declared in this scope" } + #pragma omp target map(to: b) // { dg-error "'b' does not have a mappable type in 'map' clause" } + ; +}