On Tuesday, 14 June 2016 at 21:59:32 UTC, Walter Bright wrote:
A related issue is I see much code of the form:cast(size_t)ptr & 3 to check alignment. A better (possibly faster) method is: cast(uint)ptr & 3because even 64 bit CPUs often operate faster with 32 bit operations (thanks to some research by Andrei).
Isn't it guaranteed that x.sizeof >= x.alignof? (At least it is in C and C++.) So the alignment should be of type size_t and not of type uintptr_t.
Also in general cast(uint)ptr%alignment is wrong since alignment does not need to be 32 bit. However, cast(size_t)ptr%alignment is be correct in any case.
