https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118997
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #2) > Your expectations are wrong. > If sizeof(void*) == 8 and alignof(long double) == 16, then padding needs to > be inserted > before the two member such that it is properly aligned (even when it is zero > size). Moreover the overall structure needs to be aligned to alognof(long double) as well, and the size of a structure is always a multiple of its alignment.