https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106316
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The declare variant directive is just on stub, it doesn't add properties to the variant function. I think you need #pragma omp declare target device(host) to (onhost) to make sure onhost isn't defined for the offloading target.