1! { dg-do run } 2 3MODULE distribution_types 4 ABSTRACT INTERFACE 5 FUNCTION dist_map_blk_to_proc_func ( row, col, nrow_tot, ncol_tot, proc_grid ) RESULT( reslt ) 6 INTEGER, INTENT( IN ) :: row, col, nrow_tot, ncol_tot 7 INTEGER, DIMENSION( : ), INTENT( IN ) :: proc_grid 8 INTEGER, DIMENSION( : ), ALLOCATABLE :: reslt 9 END FUNCTION dist_map_blk_to_proc_func 10 END INTERFACE 11 TYPE, PUBLIC :: dist_type 12 INTEGER, DIMENSION( : ), ALLOCATABLE :: task_coords 13 PROCEDURE( dist_map_blk_to_proc_func ), NOPASS, POINTER :: map_blk_to_proc => NULL( ) 14 END TYPE dist_type 15END MODULE distribution_types 16 17MODULE sparse_matrix_types 18 USE distribution_types, ONLY : dist_type 19 TYPE, PUBLIC :: sm_type 20 TYPE( dist_type ) :: dist 21 END TYPE sm_type 22END MODULE sparse_matrix_types 23 24PROGRAM comp_proc_ptr_test 25 USE sparse_matrix_types, ONLY : sm_type 26 27 call sm_multiply_a () 28CONTAINS 29 SUBROUTINE sm_multiply_a ( ) 30 INTEGER :: n_push_tot, istat 31 TYPE( sm_type ), DIMENSION( : ), ALLOCATABLE :: matrices_a, matrices_b 32 n_push_tot =2 33 ALLOCATE( matrices_a( n_push_tot + 1 ), matrices_b( n_push_tot + 1), STAT=istat ) 34 if (istat /= 0) STOP 1 35 if (.not. allocated(matrices_a)) STOP 2 36 if (.not. allocated(matrices_b)) STOP 3 37 if (associated(matrices_a(1)%dist%map_blk_to_proc)) STOP 4 38 END SUBROUTINE sm_multiply_a 39END PROGRAM comp_proc_ptr_test 40 41