https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119986
Bug ID: 119986 Summary: Complex array part references are being passed incorrectly to a procedure Product: gcc Version: 15.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: neil.n.carlson at gmail dot com Target Milestone: --- The follow example outputs incorrect results. program main type :: my_type complex, allocatable :: phi(:) end type integer :: j type(my_type) :: x x%phi = [(cmplx(j,-j),j=1,4)] call fubar(x%phi%re, x%phi%im) contains subroutine fubar(u, v) real, intent(in) :: u(:), v(:) print *, 'phi%re:', u print *, 'phi%im:', v end subroutine end program The correct results should be phi%re: 1.000000 2.000000 3.000000 4.000000 phi%im: -1.000000 -2.000000 -3.000000 -4.000000 But the gfortran-5.1.0 compiled code outputs phi%re: 1.00000000 -1.00000000 2.00000000 -2.00000000 phi%im: 1.00000000 -1.00000000 2.00000000 -2.00000000 The correct real and imaginary part references are not being passed to the subroutine. Note that if the complex array is not a component of a derived type, but simply a local or dummy array, then the correct part references are passed.