https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91423
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Other than that, when GCC elides a copy from by value passing it would need to create a temporary that is appropriately aligned. IIRC packed is outside of the C++ standard and using packed objects with C++ features might result in surprising standard interactions.