http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46244
--- Comment #14 from Dominique d'Humieres <dominiq at lps dot ens.fr> 2011-02-20 22:01:54 UTC --- > (apparently this new feature is not tested in the test suite) This wrong, there are several tests;-) The one that is missing is of the form: module psb_base_mat_mod type :: psb_base_sparse_mat integer, private :: m, n integer, private :: state, duplicate logical, private :: triangle, unitd, upper, sorted end type psb_base_sparse_mat end module psb_base_mat_mod module psb_d_base_mat_mod use psb_base_mat_mod integer, parameter :: psb_dpk_ = kind(1.d0) type, extends(psb_base_sparse_mat) :: psb_d_base_sparse_mat end type psb_d_base_sparse_mat type, extends(psb_d_base_sparse_mat) :: psb_d_coo_sparse_mat integer :: nnz integer, allocatable :: ia(:), ja(:) real(psb_dpk_), allocatable :: val(:) end type psb_d_coo_sparse_mat end module psb_d_base_mat_mod module psb_d_mat_mod use psb_d_base_mat_mod type :: psb_d_sparse_mat class(psb_d_base_sparse_mat), allocatable :: a contains procedure, pass(a) :: d_csclip generic, public :: csclip => d_csclip end type psb_d_sparse_mat contains subroutine d_csclip(a,b,info) use psb_d_base_mat_mod implicit none class(psb_d_sparse_mat), intent(in) :: a class(psb_d_sparse_mat), intent(out) :: b integer,intent(out) :: info type(psb_d_coo_sparse_mat), allocatable :: acoo info = 0 allocate(acoo,stat=info) if (info == 0) call move_alloc(acoo,b%a) end subroutine d_csclip end module psb_d_mat_mod