I believe I have found two minor bugs in the Intel Fortran OpenMP implementation.
First, the omp_lib module "leaks" the contents of the iso_c_binding module. This trivial program fails to compile:
program openmp_name_leak_bug use omp_lib implicit none real :: c_double, c_int end program
Second, the argument names of many of the OpenMP runtime library subprograms differ from those specified in the OpenMP standard (as required by p. 114, lines 17-22 of the OpenMP 3.1 specification). This makes it impossible to call the affected subprograms using keyword arguments, which is expected to work if the OpenMP runtime library subprograms have explicit interfaces. This affects both the omp_lib module and the omp_lib.h include file, since both declare explicit interfaces. For example, this fails to compile:
program openmp_keyword_argument_bug use omp_lib implicit none integer(omp_lock_kind) :: lock call omp_set_dynamic(dynamic_threads=.true.) call omp_set_num_threads(num_threads=1) call omp_set_lock(svar=lock) end program