[Bug target/91043] GCC produces unaligned vmovdqa vector data access
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Jul 1 13:59:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91043
--- Comment #15 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #14)
> (In reply to Hanoch Haim from comment #12)
> > Removing __rte_cache_aligned does not solve the issue
> >
> >
> > diff --git a/src/time_histogram.h b/src/time_histogram.h
> > index 07e66b49..26a37248 100755
> > --- a/src/time_histogram.h
> > +++ b/src/time_histogram.h
> > @@ -133,10 +133,10 @@ private:
> > uint32_t m_win_cnt;
> > uint32_t m_hot_max;
> > dsec_t m_max_ar[HISTOGRAM_QUEUE_SIZE]; // Array of maximum latencies
> > for previous periods
> > - uint64_t m_hcnt[HISTOGRAM_SIZE_LOG][HISTOGRAM_SIZE] __rte_cache_aligned
> > ;
> > + uint64_t m_hcnt[HISTOGRAM_SIZE_LOG][HISTOGRAM_SIZE] ;
> > // Hdr histogram instance
> > hdr_histogram *m_hdrh;
> > -};
> > +} __rte_cache_aligned;
>
> There are more aligned attributes. I see
>
> class CLatencyManager : public TrexRxCore {
> ...
> volatile bool m_do_stop __attribute__((__aligned__(64))) ;
>
> struct rte_ring {
> char name[32] __attribute__((__aligned__(64)));
>
> class CFlowGenListPerThread {
> ...
> } __attribute__((__aligned__(64)));
>
> etc.
>
> Can you check the .bss section Alignment in the final executable/shared
> object?
> Do you by chance substitute the program loader for something not honoring
> large alignment of .bss sections?
You can also check with a debugger whether your global static object
is properly aligned.
More information about the Gcc-bugs
mailing list