http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59143

janus at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |janus at gcc dot gnu.org

--- Comment #3 from janus at gcc dot gnu.org ---
Early draft patch (fixes the test case but is not regtested yet):


Index: gcc/fortran/interface.c
===================================================================
--- gcc/fortran/interface.c    (revision 204778)
+++ gcc/fortran/interface.c    (working copy)
@@ -2426,6 +2426,17 @@ get_expr_storage_size (gfc_expr *e)
             - mpz_get_si (ref->u.ar.as->lower[i]->value.integer));
         }
         }
+      else if (ref->type == REF_COMPONENT && ref->u.c.component->attr.function
+           && ref->u.c.component->attr.proc_pointer
+           && ref->u.c.component->attr.dimension)
+    {
+      /* Array-valued procedure-pointer components.  */
+      gfc_array_spec *as = ref->u.c.component->as;
+      for (i = 0; i < as->rank; i++)
+        elements = elements
+              * (mpz_get_si (as->upper[i]->value.integer)
+              - mpz_get_si (as->lower[i]->value.integer) + 1L);
+    }
     }

   if (substrlen)

Reply via email to