aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/array.cc
diff options
context:
space:
mode:
authorHarald Anlauf <anlauf@gmx.de>2022-04-06 22:24:21 +0200
committerHarald Anlauf <anlauf@gmx.de>2022-04-10 20:20:53 +0200
commit54c5e064cc3dc3c9b3dff12b6d48dc3efd482b07 (patch)
tree6633aa668db2ca970144b7d217ffc6f045b1aac1 /gcc/fortran/array.cc
parent71cac7de8f1285307f921908a43fd864baa543f9 (diff)
downloadgcc-54c5e064cc3dc3c9b3dff12b6d48dc3efd482b07.zip
gcc-54c5e064cc3dc3c9b3dff12b6d48dc3efd482b07.tar.gz
gcc-54c5e064cc3dc3c9b3dff12b6d48dc3efd482b07.tar.bz2
Fortran: fix checking of coshape specification in ALLOCATE statement
gcc/fortran/ChangeLog: PR fortran/105184 * array.cc (match_subscript): Reject assumed size coarray specification with missing lower bound. * resolve.cc (resolve_allocate_expr): Fix logic for checking allocate-coshape-spec in ALLOCATE statement. gcc/testsuite/ChangeLog: PR fortran/105184 * gfortran.dg/coarray_44.f90: Adjust expected output. * gfortran.dg/coarray_allocate_11.f90: Likewise. * gfortran.dg/coarray_allocate_12.f90: New test.
Diffstat (limited to 'gcc/fortran/array.cc')
-rw-r--r--gcc/fortran/array.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/fortran/array.cc b/gcc/fortran/array.cc
index eb9ed85..90ea812 100644
--- a/gcc/fortran/array.cc
+++ b/gcc/fortran/array.cc
@@ -134,6 +134,13 @@ end_element:
if (m == MATCH_ERROR)
return MATCH_ERROR;
+ if (star && ar->start[i] == NULL)
+ {
+ gfc_error ("Missing lower bound in assumed size "
+ "coarray specification at %C");
+ return MATCH_ERROR;
+ }
+
/* See if we have an optional stride. */
if (gfc_match_char (':') == MATCH_YES)
{