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 some 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