(root)/
gcc-13.2.0/
gcc/
testsuite/
gfortran.dg/
c-interop/
deferred-character-2.f90
! PR 92482
! { dg-do run }
!
! TS 29113
! 8.7 Interoperability of procedures and procedure interfaces
! 
! If a dummy argument in an interoperable interface is of type
! CHARACTER and is allocatable or a pointer, its character length shall
! be deferred.

program testit
  use iso_c_binding

  character (kind=C_CHAR, len=:), allocatable :: aa
  character (kind=C_CHAR, len=:), pointer :: pp


  pp => NULL ()

  call frobf (aa, pp)
  if (.not. allocated (aa)) stop 101
  if (aa .ne. 'foo') stop 102
  if (.not. associated (pp)) stop 103
  if (pp .ne. 'bar') stop 104

  pp => NULL ()

  call frobc (aa, pp)
  if (.not. allocated (aa)) stop 101
  if (aa .ne. 'frog') stop 102
  if (.not. associated (pp)) stop 103
  if (pp .ne. 'toad') stop 104


  contains

    subroutine frobf (a, p)
      use iso_c_binding
      character (kind=C_CHAR, len=:), allocatable :: a
      character (kind=C_CHAR, len=:), pointer :: p
      allocate (character(len=3) :: p)
      a = 'foo'
      p = 'bar'
    end subroutine

    subroutine frobc (a, p) bind (c)
      use iso_c_binding
      character (kind=C_CHAR, len=:), allocatable :: a
      character (kind=C_CHAR, len=:), pointer :: p
      allocate (character(len=4) :: p)
      a = 'frog'
      p = 'toad'
    end subroutine

end program