diff options
author | Harald Anlauf <anlauf@gmx.de> | 2021-11-05 23:13:57 +0100 |
---|---|---|
committer | Harald Anlauf <anlauf@gmx.de> | 2021-11-05 23:14:57 +0100 |
commit | 432ed97b992ccfe93616d5af1fa5c1a7d7aff9ff (patch) | |
tree | 809005fc27188b83b2cc5d7a203b887f6c6caed5 /gcc | |
parent | 2b2d97fc545635a0f6aa9c9ee3b017394bc494bf (diff) | |
download | gcc-432ed97b992ccfe93616d5af1fa5c1a7d7aff9ff.zip gcc-432ed97b992ccfe93616d5af1fa5c1a7d7aff9ff.tar.gz gcc-432ed97b992ccfe93616d5af1fa5c1a7d7aff9ff.tar.bz2 |
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.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/match.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr69419.f90 | 9 |
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index 5d07f89..2bf2143 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 0000000..7329808 --- /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 |