OpenMP* Analysis

The compiler detects some restrictions noted in the OpenMP* API Versions 2.0 and 2.5. When static verification is enabled, the compiler performs additional checks against restrictions in the OpenMP API, including checks for the correct use of the following:

Example: Incorrect usage of OpenMP directives

File gafort.f90 contains the following lines:

310    !$OMP PARALLEL DO ORDERED

311    ! create an array of locks

312    !$     DO i = 1,indmax

313    !$        CALL omp_init_lock(lck(i))

314    !$     ENDDO

315    !$OMP END PARALLEL DO

The parallel region has the clause ORDERED but has no corresponding ORDERED OpenMP directive. Static verification issues the following message:

gafort.f90(310): error #12204: [SV] ORDERED clause is used in the dynamic extent of non-ORDERED DO construct