https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127433
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- It works for me. But const uint64_t* pComp_cur = reinterpret_cast<const uint64_t*>(pComp); is unaligned and you dereference it, so I think this is UB and GCC is correct to infer the accesses are aligned to 8 bytes at least and assume that when attempting to ensure mutual alignment.
