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

--- Comment #4 from Walter Spector <w6ws at earthlink dot net> ---
Hi Paul,

I built an updated compiler that includes your fix.  The ICE is gone - thanks! 
However the assignment is still not correctly compiled.

The example should be reallocating the character string length of the array to
15.  Unfortunately it remains at 32.  Slightly longer example:

program strlen_bug
  implicit none

  character(:), allocatable :: strings(:)
  integer :: maxlen

  strings = [ character(32) ::  &
      'short',  &
      'somewhat longer' ]
  maxlen = maxval (len_trim (strings))
  print *, 'max length =', maxlen

! Used to cause an ICE
  strings = strings(:)(:maxlen) ! Should realloc
  print *, strings
  print *, 'string length =', len (strings)

end program

wws@w6ws-4:/rootsda5/home/wws/fortran/gfortran$ /usr/local/gcc-9/bin/gfortran
-frealloc-lhs strlen_bug.f90
wws@w6ws-4:/rootsda5/home/wws/fortran/gfortran$ a.out
 max length =          15
 short                           somewhat longer                 
 string length =          32
wws@w6ws-4:/rootsda5/home/wws/fortran/gfortran$ /usr/local/gcc-9/bin/gfortran
--version
GNU Fortran (GCC) 9.0.0 20180922 (experimental)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

wws@w6ws-4:/rootsda5/home/wws/fortran/gfortran$ 

Note that I tried explicitly adding the -frealloc-lhs option, but it didn't
make a difference either way.

Reply via email to