https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88467
--- Comment #4 from kargl at gcc dot gnu.org ---
(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.