https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96112
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Note, the mapping of objects with zero size is fuzzy at least in OpenMP and generally, when one just gets a pointer, if there are zero sized objects involved, one doesn't know if it is the end of some earlier object, a zero sized object at that address (could be many of them) or non-zero sized object starting at that address. E.g. in C++ zero sized objects aren't valid and I think in C aren't either, except for GNU extensions. The OpenMP concept of zero sized array sections is about asking to map zero bytes and essentially either get whatever object is at that address, or NULL if it is not mapped, so something that is implicitly done for pointers. It will not work reliably in presence of zero sized objects mapped at that point.