! { dg-do run }
! { dg-additional-options "-fno-f2c" }
!
! PR fortran/104312 - ICE in fold_convert_loc with entry, -ff2c: control
! Contributed by G.Steinmetz

module m
  implicit none
contains
  function f()
    real, pointer :: f, e
    real, target  :: a(2) = [1,2]
    f => a(1)
    return
    entry e()
    e => a(2)
  end
  function g()
    complex, pointer :: g,h
    complex, target  :: a(2) = [3,4]
    g => a(1)
    return
    entry h()
    h => a(2)
  end
  function f3()
    real, allocatable :: f3, e3
    allocate (f3, source=1.0)
    return
    entry e3()
    allocate (e3, source=2.0)
  end
  function g3()
    complex, allocatable :: g3, h3
    allocate (g3, source=(3.0,0.0))
    return
    entry h3()
    allocate (h3, source=(4.0,0.0))
  end
end

program p
  use m
  real,    pointer :: x
  complex, pointer :: c
  real    :: y
  complex :: d
  x => f()
  if (x /= 1.0) stop 1
  x => e()
  if (x /= 2.0) stop 2
  c => g()
  if (c /= (3.0,0.0)) stop 3
  c => h()
  if (c /= (4.0,0.0)) stop 4
  y = f3()
  if (y /= 1.0) stop 5
  y = e3()
  if (y /= 2.0) stop 6
  d = g3()
  if (d /= (3.0,0.0)) stop 7
  d = h3()
  if (d /= (4.0,0.0)) stop 8
end
