OSDN Git Service

PR fortran/50420
authormikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 18 Oct 2011 14:59:07 +0000 (14:59 +0000)
committermikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 18 Oct 2011 14:59:07 +0000 (14:59 +0000)
* trans-intrinsic.c (walk_coarray): Allow subreferences after a
coarray object reference.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180146 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/trans-intrinsic.c

index b1b0407..819369c 100644 (file)
@@ -1,6 +1,12 @@
 2011-10-18  Mikael Morin  <mikael@gcc.gnu.org>
 
        PR fortran/50420
 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.
 
        * trans-array.c (gfc_walk_array_ref): Allow zero rank arrays
        if they are coarrays.
 
index ed18bfa..82bbb69 100644 (file)
@@ -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;
       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;
     }
       ref->u.ar.type = AR_FULL;
       ss->data.info.ref = ref;
     }