https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117002
--- Comment #6 from Iain Buclaw <ibuclaw at gcc dot gnu.org> --- So I'm currently thinking that perhaps this could be fixed my end. At the definition of the type, set TYPE_ALIGN and TYPE_PACKED to 1, so it's equivalent to: class __attribute__((packed)) Foo { ... }; Then on all declarations, set the DECL_ALIGN to __traits(classInstanceAlignment) (typically 4 or 8, unless there's a field with a higher alignment requirement).