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

--- Comment #5 from anlauf at gcc dot gnu.org ---
The issue in comment#3 is likely unrelated to TRANSFER:

program p
  implicit none
! integer, parameter :: k = 1
  integer, parameter :: k = 4
  character(kind=k,len=2), parameter :: z = k_"FG"
  character(kind=1,len=*), parameter :: x = transfer (z, 'abcdefgh')
  character(kind=k,len=2)            :: u = transfer (x, z) ! always OK
  character(kind=k,len=2), parameter :: v = transfer (x, z) ! OK (kind=1)
  logical, parameter                 :: l = (z == v)
  print *, "z == v:", l
  print *, z
  print *, u
  if (u /= z) stop 4
  print *, v
  if (v /= z) stop 3  ! stops here for kind=4
end

This works for k=1 (z==v), but fails for k=4 (z/=v, but should be same).

(NAG confirms my expectations.)

Reply via email to