https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102891
--- Comment #2 from anlauf at gcc dot gnu.org --- Adding to main the lines print *, size (transfer ( w%z%re ,[1.0_dp])) print *, size (transfer ([w%z%re],[1.0_dp])) prints 4 2 whereas e.g. print *, size (transfer ( real (w%z, kind (w%z%re)) ,[1.0_dp])) print *, size (transfer ([real (w%z, kind (w%z%re))],[1.0_dp])) prints 2 2 The issue is likely with the combination of array/array constructor and the inquiry %re . Possibly related: pr102599.