https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85521
kargl at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |kargl at gcc dot gnu.org
--- Comment #4 from kargl at gcc dot gnu.org ---
gfc_resolve_character_array_constructor in array.c is not prepared
for a clever user who causes a zero length component by purposely
reference a string with an upper bound less than the lower bound.
This fixes the problem by setting a negative length to zero.
Index: gcc/fortran/array.c
===================================================================
--- gcc/fortran/array.c (revision 259623)
+++ gcc/fortran/array.c (working copy)
@@ -2046,7 +2046,8 @@ got_charlen:
else
return true;
- gcc_assert (current_length != -1);
+ if (current_length < 0)
+ current_length = 0;
if (found_length == -1)
found_length = current_length;