! PR 92621 (?)
! { dg-do run { xfail *-*-* } }
! { dg-additional-sources "fc-out-descriptor-4-c.c dump-descriptors.c" }
! { dg-additional-options "-g" }
!
! This program checks that passing an allocatable or pointer array
! as an intent(out) argument to a C function called from Fortran works.  

module mm
  use iso_c_binding
  type, bind (c) :: m
    integer(C_INT) :: i, j
  end type

  integer(C_INT), parameter :: imin = 5, imax = 10, jmin = -10, jmax = -1

end module

program testit
  use iso_c_binding
  use mm
  implicit none

  interface
    subroutine ctest1 (i0, ii, j0, jj, p) bind (c)
      use iso_c_binding
      use mm
      integer(C_INT), value :: i0, ii, j0, jj
      type(m), intent(out), pointer :: p(:,:)
    end subroutine
    subroutine ctest2 (i0, ii, j0, jj, a) bind (c)
      use iso_c_binding
      use mm
      integer(C_INT), value :: i0, ii, j0, jj
      type(m), intent(out), allocatable :: a(:,:)
    end subroutine
  end interface

  type(m), pointer :: p(:,:)
  type(m), allocatable :: a(:,:)
  integer :: i, j

  p => NULL ()
  call ctest1 (imin, imax, jmin, jmax, p)
  if (.not. associated (p)) stop 101
  if (rank(p) .ne. 2) stop 102
  if (lbound (p, 1) .ne. imin) stop 103
  if (ubound (p, 1) .ne. imax) stop 104
  if (lbound (p, 2) .ne. jmin) stop 105
  if (ubound (p, 2) .ne. jmax) stop 106
  do j = jmin, jmax
    do i = imin, imax
      if (p(i,j)%i .ne. i) stop 107
      if (p(i,j)%j .ne. j) stop 108
    end do
  end do

  ! The intent(out) argument is supposed to be deallocated automatically
  ! on entry to the called function.
  allocate (a (jmin:jmax,imin:imax))
  if (.not. allocated (a)) stop 201
  call ctest2 (imin, imax, jmin, jmax, a)
  if (.not. allocated (a)) stop 201
  if (rank(a) .ne. 2) stop 202
  if (lbound (a, 1) .ne. imin) stop 203
  if (ubound (a, 1) .ne. imax) stop 204
  if (lbound (a, 2) .ne. jmin) stop 205
  if (ubound (a, 2) .ne. jmax) stop 206
  do j = jmin, jmax
    do i = imin, imax
      if (a(i,j)%i .ne. i) stop 207
      if (a(i,j)%j .ne. j) stop 208
    end do
  end do
end program
