https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98884
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Note, for ABI compatibility or incompatibility it might be better to check what happens when some argument is passed after the empty structs. Because at least in some ABIs one could get away with just pretending the stack slots (or registers) are there even when they aren't actually allocated on the stack, but one would need to have guarantees the callee e.g. will never modify those stack slots (in most ABIs the call argument stack slot are owned by the callee).