https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114859

--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I see there roughly
module m1
  type  amg_d_base_solver_type
  contains
    procedure, pass(sv) :: apply_v => amg_d_base_solver_apply_vect
    procedure, pass(sv) :: apply_a => amg_d_base_solver_apply
  end type amg_d_base_solver_type

  interface
    subroutine amg_d_base_solver_apply_vect(alpha,sv,x)
      implicit none
      class(amg_d_base_solver_type), intent(inout) :: sv
      integer,intent(inout)          :: x
      real,intent(in)                     :: alpha
    end subroutine amg_d_base_solver_apply_vect
  end interface

  interface
    subroutine amg_d_base_solver_apply(alpha,sv,x)
      implicit none
      class(amg_d_base_solver_type), intent(inout) :: sv
      integer,intent(inout)          :: x
      real,intent(in)                     :: alpha
    end subroutine amg_d_base_solver_apply
  end interface
end module m1
module m2
  use m1
  type  amg_d_base_smoother_type
    class(amg_d_base_solver_type), allocatable :: sv
  contains
    procedure, pass(sm) :: apply_v => amg_d_base_smoother_apply_vect
    procedure, pass(sm) :: apply_a => amg_d_base_smoother_apply
  end type amg_d_base_smoother_type

  interface
    subroutine amg_d_base_smoother_apply_vect(alpha,sm,x)
      implicit none
      class(amg_s_base_smoother_type), intent(inout) :: sm
      integer,intent(inout)          :: x
      real,intent(in)                     :: alpha
    end subroutine amg_d_base_smoother_apply_vect
  end interface

  interface
    subroutine amg_d_base_smoother_apply(alpha,sm,x)
      implicit none
      class(amg_s_base_smoother_type), intent(inout) :: sm
      integer,intent(inout)          :: x
      real,intent(in)                     :: alpha
    end subroutine amg_d_base_smoother_apply
  end interface
end module m2
subroutine foo (save1)
  use m1, m2
  class(amg_d_base_smoother_type), allocatable , intent(inout) :: save1
  allocate(save1)
end subroutine

except that this doesn't compile.

Reply via email to