https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103384
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Would --- gcc/omp-general.c.jj 2021-10-15 11:59:16.135683948 +0200 +++ gcc/omp-general.c 2021-11-23 15:45:32.761468592 +0100 @@ -1487,16 +1487,22 @@ omp_context_selector_matches (tree ctx) continue; if (!strcmp (prop, "host")) { +#ifdef ACCEL_COMPILER + return 0; +#else if (omp_maybe_offloaded ()) ret = -1; continue; +#endif } if (!strcmp (prop, "nohost")) { +#ifndef ACCEL_COMPILER if (omp_maybe_offloaded ()) ret = -1; else return 0; +#endif continue; } int r = 0; fix this? In ACCEL_COMPILER we know that it is nohost, so for host we should return 0 even if we earlier on the host side said it might be offloaded and so defer, and for host we know it is ok. I don't really like the test, in the SOLLVE test it just relies on no host fallback without ensuring it, in your attached test omp_get_num_devices () doesn't guarantee no host fallback either. Check omp_is_initial_device () in the target region instead?