https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97943
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- BTW, for all the 3 cases __builtin_clear_padding will be called on, i.e. the constructor of std::atomic for the type, the desired argument passed by value and the expected argument, which while it is passed by value is also stored by the implementation (copied from the atomic memory), one can't effectively have any flexible (or poor man's flexible) array members except those that fit into the tail padding of the structures. So in many cases nothing at all. So for the flexible array members, if we don't sorry on them, we could also clear the tail padding spot for partial elements, because one really can't have there half of an element.