https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92722
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |diagnostic, | |missed-optimization Status|UNCONFIRMED |NEW Last reconfirmed| |2019-11-29 Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- It clearly copies an uninitialized 'char'. The middle-end doesn't know this is padding (or even what padding is), so you have to work around this in the C++ source somehow. At least I cannot even see how the C++ FE could mark those accesses with TREE_NO_WARNING because even the FE doesn't see we are accessing padding. Maybe all std::copy/move/etc. should do nothing for "empty" types. It's also a missed optimization of course.