aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMikael Morin <mikael@gcc.gnu.org>2011-10-18 14:59:07 +0000
committerMikael Morin <mikael@gcc.gnu.org>2011-10-18 14:59:07 +0000
commit411e1a0f5350182c7833016eff8f1459a92d7531 (patch)
tree782e5e6b8a8037324df9a9edab0435621ed3cf7e /gcc
parent6b81e94de1454dbe12edac8ba9192b8da01783e8 (diff)
downloadgcc-411e1a0f5350182c7833016eff8f1459a92d7531.zip
gcc-411e1a0f5350182c7833016eff8f1459a92d7531.tar.gz
gcc-411e1a0f5350182c7833016eff8f1459a92d7531.tar.bz2
re PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)
PR fortran/50420 * trans-intrinsic.c (walk_coarray): Allow subreferences after a coarray object reference. From-SVN: r180146
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-intrinsic.c12
2 files changed, 15 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index b1b0407..819369c 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,6 +1,12 @@
2011-10-18 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/50420
+ * trans-intrinsic.c (walk_coarray): Allow subreferences after a
+ coarray object reference.
+
+2011-10-18 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/50420
* trans-array.c (gfc_walk_array_ref): Allow zero rank arrays
if they are coarrays.
diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c
index ed18bfa..82bbb69 100644
--- a/gcc/fortran/trans-intrinsic.c
+++ b/gcc/fortran/trans-intrinsic.c
@@ -943,10 +943,16 @@ walk_coarray (gfc_expr *e)
ss = gfc_get_array_ss (gfc_ss_terminator, e, 0, GFC_SS_SECTION);
ref = e->ref;
- while (ref->next)
- ref = ref->next;
+ while (ref)
+ {
+ if (ref->type == REF_ARRAY
+ && ref->u.ar.codimen > 0)
+ break;
+
+ ref = ref->next;
+ }
- gcc_assert (ref->type == REF_ARRAY && ref->u.ar.codimen > 0);
+ gcc_assert (ref != NULL);
ref->u.ar.type = AR_FULL;
ss->data.info.ref = ref;
}