Skip site navigation (1)Skip section navigation (2)
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>