! { dg-do compile } ! { dg-options "-O -fbounds-check" } MODULE array_types INTERFACE array_data MODULE PROCEDURE array_data_i1d END INTERFACE TYPE array_i1d_type END TYPE array_i1d_type TYPE array_i1d_obj TYPE(array_i1d_type), POINTER :: low END TYPE array_i1d_obj TYPE dbcsr_type TYPE(array_i1d_obj) :: local_rows LOGICAL :: local_indexing END TYPE dbcsr_type TYPE dbcsr_obj TYPE(dbcsr_type) :: m END TYPE dbcsr_obj CONTAINS FUNCTION array_data_i1d(array) RESULT (DATA) TYPE(array_i1d_obj), INTENT(IN) :: array INTEGER, DIMENSION(:), POINTER :: DATA IF (ASSOCIATED (array%low)) THEN ENDIF END FUNCTION array_data_i1d SUBROUTINE dbcsr_make_index_list (matrix, thread_redist) TYPE(dbcsr_obj), INTENT(INOUT) :: matrix LOGICAL, INTENT(IN) :: thread_redist INTEGER, ALLOCATABLE, DIMENSION(:, :) :: blki INTEGER, DIMENSION(:), POINTER :: local_rows, td INTEGER :: blk nthreads = 0 IF (nthreads .GT. 0 .AND. thread_redist) THEN IF (matrix%m%local_indexing) THEN local_rows => array_data (matrix%m%local_rows) ENDIF CALL dbcsr_build_row_index_inplace (thr_c, nthreads) IF (matrix%m%local_indexing) THEN DO blk = 1, nblks IF (td(local_rows(blki(1, blk))) .EQ. ithread) THEN ENDIF ENDDO ENDIF ENDIF END SUBROUTINE dbcsr_make_index_list END MODULE