https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94593
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- error: Only one unified_shared_memory clause can appear on a requires directive in a single translation unit is incorrect, dunno where they took it from. The same clause can't appear multiple times on the same directive and only one atomic_default_mem_order can appear in a TU etc., but nothing says you can't have #pragma omp requires unified_shared_memory #pragma omp requires unified_shared_memory #pragma omp requires unified_shared_memory #pragma omp requires unified_shared_memory #pragma omp requires unified_shared_memory Though, there is a restriction which we don't diagnose, namely that #pragma omp requires can only appear at file or namespace scope (in C/C++).