! { dg-options "-floop-nest-optimize -O2" } MODULE dbcsr_index_operations INTERFACE dbcsr_build_row_index END INTERFACE CONTAINS SUBROUTINE merge_index_arrays (new_row_i, new_col_i, new_blk_p, new_size,& old_row_i, old_col_i, old_blk_p, old_size,& add_ip, add_size, new_blk_d, old_blk_d,& added_size_offset, added_sizes, added_size, added_nblks, error) INTEGER, DIMENSION(new_size), & INTENT(OUT) :: new_blk_p, new_col_i, & new_row_i INTEGER, INTENT(IN) :: old_size INTEGER, DIMENSION(old_size), INTENT(IN) :: old_blk_p, old_col_i, & old_row_i INTEGER, DIMENSION(new_size), & INTENT(OUT), OPTIONAL :: new_blk_d INTEGER, DIMENSION(old_size), & INTENT(IN), OPTIONAL :: old_blk_d INTEGER, DIMENSION(:), INTENT(IN), & OPTIONAL :: added_sizes INTEGER, INTENT(OUT), OPTIONAL :: added_size, added_nblks LOGICAL :: multidata IF (add_size .GT. 0) THEN IF (old_size .EQ. 0) THEN IF (PRESENT (added_size)) added_size = SUM (added_sizes) ENDIF ELSE new_row_i(1:old_size) = old_row_i(1:old_size) new_col_i(1:old_size) = old_col_i(1:old_size) new_blk_p(1:old_size) = old_blk_p(1:old_size) IF (multidata) new_blk_d(1:old_size) = old_blk_d(1:old_size) ENDIF END SUBROUTINE merge_index_arrays END MODULE dbcsr_index_operations