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