Date: Sun, 26 May 2013 15:01:33 -0400 From: Lee Thomas <lee_thomas@aslantools.com> To: <freebsd-hackers@freebsd.org> Subject: Re: Performance improvement to strnlen(). Message-ID: <2adc4d8e7c55e92d935f61efb4c9d723@lthomas.net>
next in thread | raw e-mail | index | archive | help
On 2013-05-26 08:00, Václav Zeman wrote: > On 05/25/2013 10:27 PM, Lee Thomas wrote: >> + lp = (const unsigned long *)((uintptr_t)str & ~LONGPTR_MASK); >> + va = (*lp - mask01); >> + vb = ((~*lp) & mask80); > I do not think that this correct C. This is type punning violating > the > rules of the language. Hello Václav, The aliasing here is safe, because there are no writes through either of the pointers, and the reads are correctly aligned. Regards, Lee Thomas
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2adc4d8e7c55e92d935f61efb4c9d723>