https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64972
--- Comment #14 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Kai Tietz from comment #13) > Rainer: does following patch works for you? > > Index: oacc-parallel.c > =================================================================== > --- oacc-parallel.c (Revision 221640) > +++ oacc-parallel.c (Arbeitskopie) > @@ -31,6 +31,9 @@ > #include "libgomp_g.h" > #include "gomp-constants.h" > #include "oacc-int.h" > +#ifdef HAVE_INTTYPES_H > +# include <inttypes.h> /* For PRIu64. */ > +#endif > #include <string.h> > #include <stdarg.h> > #include <assert.h> > @@ -99,9 +102,14 @@ GOACC_parallel (int device, void (*fn) (void *), > gomp_fatal ("num_workers (%d) different from one is not yet supported", > num_workers); > > +#ifdef HAVE_INTTYPES_H > + gomp_debug (0, "%s: mapnum=%"PRIu64", hostaddrs=%p, size=%p, kinds=%p, " > + "async = %d\n", > + __FUNCTION__, (uint64_t) mapnum, hostaddrs, sizes, kinds, async); > +#else > gomp_debug (0, "%s: mapnum=%zd, hostaddrs=%p, sizes=%p, kinds=%p, > async=%d\n", > __FUNCTION__, mapnum, hostaddrs, sizes, kinds, async); > - > +#endif > select_acc_device (device); > > thr = goacc_thread (); > @@ -178,8 +186,13 @@ GOACC_data_start (int device, size_t mapnum, > bool host_fallback = device == GOMP_DEVICE_HOST_FALLBACK; > struct target_mem_desc *tgt; > > +#ifdef HAVE_INTTYPES_H > + gomp_debug (0, "%s: mapnum=%"PRIu64", hostaddrs=%p, size=%p, kinds=%p\n", > + __FUNCTION__, (uint64_t) mapnum, hostaddrs, sizes, kinds); > +#else > gomp_debug (0, "%s: mapnum=%zd, hostaddrs=%p, sizes=%p, kinds=%p\n", > __FUNCTION__, mapnum, hostaddrs, sizes, kinds); > +#endif > > select_acc_device (device); > > Index: target.c > =================================================================== > --- target.c (Revision 221640) > +++ target.c (Arbeitskopie) > @@ -33,6 +33,9 @@ > #include <limits.h> > #include <stdbool.h> > #include <stdlib.h> > +#ifdef HAVE_INTTYPES_H > +# include <inttypes.h> /* For PRIu64. */ > +#endif > #include <string.h> > #include <assert.h> > > @@ -438,9 +441,16 @@ gomp_map_vars (struct gomp_device_descr *devicep, > /* We already looked up the memory region above and it > was missing. */ > size_t size = k->host_end - k->host_start; > +#ifdef HAVE_INTTYPES_H > gomp_fatal ("present clause: !acc_is_present (%p, " > + PRIu64" (0x"PRIx64"))", > + (void *) k->host_start, > + (uint64_t) size, (uint64_t) size); > +#else > + gomp_fatal ("present clause: !acc_is_present (%p, " > "%zd (0x%zx))", (void *) k->host_start, > size, size); > +#endif > } > break; > case GOMP_MAP_FORCE_DEVICEPTR: The fallback case really should use %ld or %lx and casts to (unsigned long). Targets that have inttypes.h will (with the exception of M$ targets) likely also support %zd / %zx.