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.

Reply via email to