! { dg-do compile }
! PR fortran/30683
! Code contributed by Salvatore Filippone.
!
module class_fld
   integer, parameter :: int_ = 1
  integer, parameter :: bnd_ = 2
  type fld
     integer                 :: size(2)
  end type fld
  !
  !  This interface is extending the SIZE intrinsic procedure,  
  !  which led to a segmentation fault when trying to resolve
  !  the intrinsic symbol name.
  !
  interface size
     module procedure get_fld_size
  end interface
contains
  function get_fld_size(f)
    integer :: get_fld_size(2)
    type(fld), intent(in) :: f
    get_fld_size(int_) = f%size(int_)
    get_fld_size(bnd_) = f%size(bnd_)
  end function get_fld_size
end module class_fld

module class_s_fld
  use class_fld
  type s_fld
     type(fld) :: base
     real(kind(1.d0)), pointer :: x(:)  => null()
  end type s_fld
  interface x_
     module procedure get_s_fld_x
  end interface
contains
  function get_s_fld_x(fld)
    real(kind(1.d0)), pointer :: get_s_fld_x(:)
    type(s_fld), intent(in) :: fld
    get_s_fld_x => fld%x
  end function get_s_fld_x
end module class_s_fld

module class_s_foo
contains
  subroutine solve_s_foo(phi,var)
    use class_s_fld
    type(s_fld), intent(inout) :: phi
    real(kind(1.d0)), intent(out), optional :: var
    integer :: nsz
    real(kind(1.d0)), pointer :: x(:)
    x => x_(phi)
    nsz=size(x)
  end subroutine solve_s_foo
end module class_s_foo
