https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114445
--- Comment #3 from Andrew Stubbs <ams at gcc dot gnu.org> --- sizeof(void*) is defined to match. It's a requirement of offloading that all basic types are the same, and structs are laid out the same, with the same endian and alignment, etc. You only run into problems when you assume that user/library defined types are the same (e.g. gomp_mutex_t might match, or might not).