I think the answer to your specific question is βyesβ - although I'm not sure that it is specific to the broadcast itself, but to non-aligned pointers in general. The code internal to buf_xor () looks basically OK to me, so I would see what addresses are being passed.
It seems to me that you do not want you to call buf_xor () with inconsistent addresses. If this is not the case (if you call but_xor () everywhere with offset addresses), then I would make sure that uintptr_t is defined as the same thing (and, in particular, 64 bits wide based on your output), where buf_xor () compiled as well as where it is called.
One final personal note is that since your buf_xor () implementation requires consistent pointers as parameters for some processor / compiler implementations, you could probably save some future hassle by changing the signature to reflect this (change void * to uintptr_t *) - or change the implementation itself to correctly handle it manually, with inconsistent addresses on all architectures.
source share