blob: 1b784c01cd922534d83c1db9112a1894fa523922 [file] [log] [blame]
! { dg-do run }
MODULE distribution_types
ABSTRACT INTERFACE
FUNCTION dist_map_blk_to_proc_func ( row, col, nrow_tot, ncol_tot, proc_grid ) RESULT( reslt )
INTEGER, INTENT( IN ) :: row, col, nrow_tot, ncol_tot
INTEGER, DIMENSION( : ), INTENT( IN ) :: proc_grid
INTEGER, DIMENSION( : ), ALLOCATABLE :: reslt
END FUNCTION dist_map_blk_to_proc_func
END INTERFACE
TYPE, PUBLIC :: dist_type
INTEGER, DIMENSION( : ), ALLOCATABLE :: task_coords
PROCEDURE( dist_map_blk_to_proc_func ), NOPASS, POINTER :: map_blk_to_proc => NULL( )
END TYPE dist_type
END MODULE distribution_types
MODULE sparse_matrix_types
USE distribution_types, ONLY : dist_type
TYPE, PUBLIC :: sm_type
TYPE( dist_type ) :: dist
END TYPE sm_type
END MODULE sparse_matrix_types
PROGRAM comp_proc_ptr_test
USE sparse_matrix_types, ONLY : sm_type
call sm_multiply_a ()
CONTAINS
SUBROUTINE sm_multiply_a ( )
INTEGER :: n_push_tot, istat
TYPE( sm_type ), DIMENSION( : ), ALLOCATABLE :: matrices_a, matrices_b
n_push_tot =2
ALLOCATE( matrices_a( n_push_tot + 1 ), matrices_b( n_push_tot + 1), STAT=istat )
if (istat /= 0) STOP 1
if (.not. allocated(matrices_a)) STOP 2
if (.not. allocated(matrices_b)) STOP 3
if (associated(matrices_a(1)%dist%map_blk_to_proc)) STOP 4
END SUBROUTINE sm_multiply_a
END PROGRAM comp_proc_ptr_test