1! { dg-options "-floop-nest-optimize -O2" } 2MODULE dbcsr_index_operations 3 INTERFACE dbcsr_build_row_index 4 END INTERFACE 5CONTAINS 6 SUBROUTINE merge_index_arrays (new_row_i, new_col_i, new_blk_p, new_size,& 7 old_row_i, old_col_i, old_blk_p, old_size,& 8 add_ip, add_size, new_blk_d, old_blk_d,& 9 added_size_offset, added_sizes, added_size, added_nblks, error) 10 INTEGER, DIMENSION(new_size), & 11 INTENT(OUT) :: new_blk_p, new_col_i, & 12 new_row_i 13 INTEGER, INTENT(IN) :: old_size 14 INTEGER, DIMENSION(old_size), INTENT(IN) :: old_blk_p, old_col_i, & 15 old_row_i 16 INTEGER, DIMENSION(new_size), & 17 INTENT(OUT), OPTIONAL :: new_blk_d 18 INTEGER, DIMENSION(old_size), & 19 INTENT(IN), OPTIONAL :: old_blk_d 20 INTEGER, DIMENSION(:), INTENT(IN), & 21 OPTIONAL :: added_sizes 22 INTEGER, INTENT(OUT), OPTIONAL :: added_size, added_nblks 23 LOGICAL :: multidata 24 IF (add_size .GT. 0) THEN 25 IF (old_size .EQ. 0) THEN 26 IF (PRESENT (added_size)) added_size = SUM (added_sizes) 27 ENDIF 28 ELSE 29 new_row_i(1:old_size) = old_row_i(1:old_size) 30 new_col_i(1:old_size) = old_col_i(1:old_size) 31 new_blk_p(1:old_size) = old_blk_p(1:old_size) 32 IF (multidata) new_blk_d(1:old_size) = old_blk_d(1:old_size) 33 ENDIF 34 END SUBROUTINE merge_index_arrays 35END MODULE dbcsr_index_operations 36