https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94050
--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Looks like we're losing the TYPE_USER_ALIGN bit. That's probably because arm is STRICT_ALIGNMENT and so finalize_type_size does this: 1930 /* Don't override a larger alignment requirement coming from a user 1931 alignment of one of the fields. */ 1932 if (mode_align >= TYPE_ALIGN (type)) 1933 { 1934 SET_TYPE_ALIGN (type, mode_align); 1935 TYPE_USER_ALIGN (type) = 0; 1936 }