diff options
Diffstat (limited to 'gcc/fortran/array.cc')
-rw-r--r-- | gcc/fortran/array.cc | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/gcc/fortran/array.cc b/gcc/fortran/array.cc index a5e94f1..1fa61eb 100644 --- a/gcc/fortran/array.cc +++ b/gcc/fortran/array.cc @@ -203,6 +203,12 @@ gfc_match_array_ref (gfc_array_ref *ar, gfc_array_spec *as, int init, { ar->type = AR_FULL; ar->dimen = 0; + if (corank != 0) + { + for (int i = 0; i < GFC_MAX_DIMENSIONS; ++i) + ar->dimen_type[i] = DIMEN_THIS_IMAGE; + ar->codimen = corank; + } return MATCH_YES; } @@ -238,7 +244,15 @@ coarray: if (!matched_bracket && gfc_match_char ('[') != MATCH_YES) { if (ar->dimen > 0) - return MATCH_YES; + { + if (corank != 0) + { + for (int i = ar->dimen; i < GFC_MAX_DIMENSIONS; ++i) + ar->dimen_type[i] = DIMEN_THIS_IMAGE; + ar->codimen = corank; + } + return MATCH_YES; + } else return MATCH_ERROR; } |