https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101378
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> --- ... and if the type is visible outside a single translation unit, then it needs to follow the layout mandated by the ABI anyway, or it would violate the One-Definition Rule.