[Bug fortran/56929] [OOP] [F08] ICE on dummy argument child class with coarray inside parent

burnus at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Apr 12 09:21:00 GMT 2013


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

Tobias Burnus <burnus at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |ice-on-valid-code
                 CC|burnus@net-b.de             |burnus at gcc dot gnu.org
            Summary|[4.8/4.9 Regression] [OOP]  |[OOP] [F08] ICE on dummy
                   |[F08] ICE on dummy argument |argument child class with
                   |child class with coarray    |coarray inside parent
                   |inside parent               |

--- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> 2013-04-12 09:20:57 UTC ---
The following patch fixes that ICE - but it introduces a follow-up ICE:

   error: cannot convert to a pointer type

in gcc/convert.c:81's convert_to_pointer for a component_ref of
child->src->parent->dummy


--- a/gcc/fortran/trans-array.c
+++ b/gcc/fortran/trans-array.c
@@ -7323,3 +7323,3 @@ duplicate_allocatable (tree dest, tree src, tree type,
int rank,

-  if (rank == 0)
+  if (!GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (dest)))
     {
@@ -7350,3 +7350,9 @@ duplicate_allocatable (tree dest, tree src, tree type,
int rank,
       gfc_init_block (&block);
-      nelems = get_full_array_size (&block, src, rank);
+
+      if (rank)
+       nelems = get_full_array_size (&block, src, rank);
+      else
+       /* Coarray scalar.  */
+       nelems = gfc_index_one_node;
+
       tmp = fold_convert (gfc_array_index_type,



More information about the Gcc-bugs mailing list