https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67709
--- Comment #3 from vries at gcc dot gnu.org --- libgomp.fortran/declare-simd-3.f90: ... subroutine bar use declare_simd_2_mod real :: b(128) integer :: i !$omp simd do i = 1, 128 b(i) = i * 2.0 end do !$omp simd do i = 1, 128 b(i) = foo (7.0_8, 5 * i, b(i)) end do do i = 1, 128 if (b(i).ne.(7.0 + 10.0 * i * i)) call abort end do end subroutine bar ... So foo has no definition in the current module, and a call to foo is part of an omp simd construct.