https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102599
anlauf at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-on-valid-code --- Comment #1 from anlauf at gcc dot gnu.org --- Replacing real, parameter :: r(*) = x%re real, parameter :: i(*) = x%im by real, parameter :: r(*) = real (x) real, parameter :: i(*) = imag (x) fixes things. Similarly, the scalar variant real, parameter :: y = real (x(1)) real, parameter :: z = imag (x(1)) print *, y, z works fine, but real, parameter :: y = x(1)%re real, parameter :: z = x(1)%im print *, y, z ICEs in trans-array::gfc_get_descriptor_field, since we miss the simplification.