https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88467

kargl at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |kargl at gcc dot gnu.org

--- Comment #5 from kargl at gcc dot gnu.org ---
(In reply to kargl from comment #4)
> (In reply to kargl from comment #3)
> > See pr88116 for a description of what appears to be happening.
> 
> So, in array.c (gfc_match_array_constructor), we have this 
> bit of code
> 
> 
>       /* Walk the constructor and ensure type conversion for numeric types. 
> */
>       if (gfc_numeric_ts (&ts))
>       {
>         c = gfc_constructor_first (head);
>         for (; c; c = gfc_constructor_next (c))
>           gfc_convert_type (c->expr, &ts, 1);
>       }
> 
> For a failing example of "[integer :: 1, [integer(8) :: '3', 4]]",
> ts is integer.  The first constructor element is 1 and it has
> an EXPR_CONSTANT type and integer type.  The next constructor has
> EXPR_ARRAY and the type for the array is integer(8).  A conversion 
> is applied to array.  What I haven't determined yet is why
> gfc_match_array_constructor is called recursively or does reach 
> the walk.

Well, that was a fun debugging session.  In fact, gfortran does
queue an error message, but issuing the error does not occur
because of an idiotic error caused by the person who wrote the
above code.  I'll have a patch ready shortly.

Reply via email to