1! { dg-do compile }
2! { dg-additional-options "-O -Wfrontend-loop-interchange" }
3PROGRAM TEST_DO_SPEED
4  IMPLICIT NONE
5
6  REAL, ALLOCATABLE :: A(:,:,:), B(:,:,:), C(:,:,:)
7  REAL :: TIC
8  INTEGER :: T0, T1, T2
9  INTEGER :: I, J, K
10  INTEGER, PARAMETER :: L = 512, M = 512, N = 512
11
12  ALLOCATE( A(L,M,N), B(L,M,N), C(L,M,N) )
13  CALL RANDOM_NUMBER(A)
14  CALL RANDOM_NUMBER(B)
15
16  CALL SYSTEM_CLOCK( T0, TIC)
17
18  DO CONCURRENT( K=1:N, J=1:M, I=1:L) ! { dg-warning "Interchanging loops" }
19    C(I,J,K) = A(I,J,K) +B(I,J,K)
20  END DO
21END
22
23