diff options
author | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-09-12 10:05:19 +0000 |
---|---|---|
committer | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-09-12 10:05:19 +0000 |
commit | 41fb0e9da4bab1f7168fedb4c0825c7f2939eef1 (patch) | |
tree | 70a3ab6722daa98240e9aa45eec07e2c8ca5f5bc /gcc/fortran/array.c | |
parent | 5a79e03e30456c3938bcbbe0fe44e2b7e41bc8e6 (diff) |
2012-09-12 Tobias Burnus <burnus@net-b.de>
PR fortran/54225
PR fortran/53306
* array.c (match_subscript, gfc_match_array_ref): Fix
diagnostic of coarray's '*'.
2012-09-12 Tobias Burnus <burnus@net-b.de>
PR fortran/54225
PR fortran/53306
* gfortran.dg/coarray_10.f90: Update dg-error.
* gfortran.dg/coarray_28.f90: New.
* gfortran.dg/array_section_3.f90: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@191213 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/array.c')
-rw-r--r-- | gcc/fortran/array.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c index 07fecd8aaf38..44ec72eb87c5 100644 --- a/gcc/fortran/array.c +++ b/gcc/fortran/array.c @@ -91,9 +91,7 @@ match_subscript (gfc_array_ref *ar, int init, bool match_star) else if (!star) m = gfc_match_expr (&ar->start[i]); - if (m == MATCH_NO && gfc_match_char ('*') == MATCH_YES) - return MATCH_NO; - else if (m == MATCH_NO) + if (m == MATCH_NO) gfc_error ("Expected array subscript at %C"); if (m != MATCH_YES) return MATCH_ERROR; @@ -224,7 +222,7 @@ coarray: for (ar->codimen = 0; ar->codimen + ar->dimen < GFC_MAX_DIMENSIONS; ar->codimen++) { - m = match_subscript (ar, init, ar->codimen == (corank - 1)); + m = match_subscript (ar, init, true); if (m == MATCH_ERROR) return MATCH_ERROR; @@ -255,6 +253,13 @@ coarray: gfc_error ("Invalid form of coarray reference at %C"); return MATCH_ERROR; } + else if (ar->dimen_type[ar->codimen + ar->dimen] == DIMEN_STAR) + { + gfc_error ("Unexpected '*' for codimension %d of %d at %C", + ar->codimen + 1, corank); + return MATCH_ERROR; + } + if (ar->codimen >= corank) { gfc_error ("Invalid codimension %d at %C, only %d codimensions exist", |