https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113045
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |WAITING Ever confirmed|0 |1 Last reconfirmed| |2023-12-17 --- Comment #9 from Andrew Pinski <pinskia at gcc dot gnu.org> --- This is almost definitely a valgrind issue. We start with: /* Align the source pointer. */ misalign = (uintptr_t)s & 15; p = (const uint8_t *)((uintptr_t)s & -16); data = vld1q_u8 (p); Which all other targets do too. Basically this is how you realign the pointer and if don't depend on the bytes that is not in the original pointer, then this is valid. Does it work correctly without valgrind?