https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70913
Harald Anlauf <anlauf at gmx dot de> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |anlauf at gmx dot de
--- Comment #5 from Harald Anlauf <anlauf at gmx dot de> ---
(In reply to Gerhard Steinmetz from comment #3)
> Another situation :
>
> $ cat z4.f90
> program p
> character(3) :: a(2) = ['abc', 'xyz']
> character(3) :: b(1,2) = ' '
> equivalence (b, a)
> end
>
> $ gfortran-6 z4.f90
> internal compiler error: in gfc_encode_character, at
> fortran/target-memory.c:227
>
> ---
>
> Interestingly, this works without initializer of b :
It is not important that b is of rank 2, the ICE occurs also for
character(3) :: b(2) = ' '
Running under the debugger, the assert
220 gfc_encode_character (int kind, size_t length, const gfc_char_t
*string,
221 unsigned char *buffer, size_t buffer_size)
222 {
223 size_t elsize = size_character (1, kind);
224 tree type = gfc_get_char_type (kind);
225
226 gcc_assert (buffer_size >= size_character (length, kind));
appears to be triggered by a call with buffer_size=0 while processing the
equivalence. This can also be guessed by looking at the backtrace.