https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91043
--- Comment #21 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Hanoch Haim from comment #19) > After some investigation, I think it is not a gcc issue, please verify. > One of the internal object does not include a 64B alignment. > > #define __rte_cache_aligned __attribute__((__aligned__(64))); > > class CTimeHistogram { > > } __rte_cache_aligned; > > > class CCPortLatency { > public: > CTimeHistogram m_hist; > } __rte_cache_aligned; <<= without this, it is not aligned while the code > generation assumed it is aligned ! > > class Root { > > CCPortLatency port; > > } __rte_cache_aligned; > > > Is it valid? why the code generation assumed the CCPortLatency is aligned > because one of its internal is aligned? Of course it does, because without aligning the container you cannot have aligned members. Maximum alignment always propagates outwards.