[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