https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84571
cesar at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |cesar at gcc dot gnu.org --- Comment #1 from cesar at gcc dot gnu.org --- The is the legacy firstprivate_int optimization. Prior to the param state optimization, GCC used to build a struct of pointers to all of the data mappings used by an offloaded region. That struct would then be passed to the offloaded function. To optimize the transfer of firstprivate integer values, Jakub introduced an GOMP_MAP_FIRSTPRIVATE_INT data mapping, which effective converts 32-bit ints to 64-bit ints. The advantage here is that those firstprivate values do not require a separate data mapping, because the 64-bt int is casted into a dummy pointer. There should be on-device code to reconvert that 64-bit int into a 32-bit int. If not, there's a bug somewhere. With regards to OpenACC code passing data mappings to offloaded functions directly via function arguments, it's not clear if the approach I took is optimal for all targets. So, maybe when it comes time to upstream that patch, it could be rewritten as a separate device-specific pass which expands struct containing all of the offloaded data mappings into individual function arguments.