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