From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2071) id 646663858421; Fri, 5 Nov 2021 22:15:37 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 646663858421 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Harald Anlauf To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-4964] Fortran: a symbol in a COMMON cannot be a coarray X-Act-Checkin: gcc X-Git-Author: Harald Anlauf X-Git-Refname: refs/heads/master X-Git-Oldrev: 2b2d97fc545635a0f6aa9c9ee3b017394bc494bf X-Git-Newrev: 432ed97b992ccfe93616d5af1fa5c1a7d7aff9ff Message-Id: <20211105221537.646663858421@sourceware.org> Date: Fri, 5 Nov 2021 22:15:37 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Nov 2021 22:15:37 -0000 https://gcc.gnu.org/g:432ed97b992ccfe93616d5af1fa5c1a7d7aff9ff commit r12-4964-g432ed97b992ccfe93616d5af1fa5c1a7d7aff9ff Author: Harald Anlauf Date: Fri Nov 5 23:13:57 2021 +0100 Fortran: a symbol in a COMMON cannot be a coarray gcc/fortran/ChangeLog: PR fortran/69419 * match.c (gfc_match_common): Check array spec of a symbol in a COMMON object list and reject it if it is a coarray. gcc/testsuite/ChangeLog: PR fortran/69419 * gfortran.dg/pr69419.f90: New test. Diff: --- gcc/fortran/match.c | 7 +++++++ gcc/testsuite/gfortran.dg/pr69419.f90 | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index 5d07f897e45..2bf21434a42 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -5288,6 +5288,13 @@ gfc_match_common (void) goto cleanup; } + if (as->corank) + { + gfc_error ("Symbol %qs in COMMON at %C cannot be a " + "coarray", sym->name); + goto cleanup; + } + if (!gfc_add_dimension (&sym->attr, sym->name, NULL)) goto cleanup; diff --git a/gcc/testsuite/gfortran.dg/pr69419.f90 b/gcc/testsuite/gfortran.dg/pr69419.f90 new file mode 100644 index 00000000000..7329808611c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr69419.f90 @@ -0,0 +1,9 @@ +! { dg-do compile } +! { dg-options "-fcoarray=lib" } +! PR fortran/69419 - ICE on invalid coarray in common + +blockdata b + real x ! { dg-error "must be in COMMON" } + common /c/ x[*] ! { dg-error "cannot be a coarray" } + data x /1.0/ +end