On 26 May 2013 21:01, Lee Thomas wrote:
> 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.
I disagree. IANALL but AFAIK, this is simply not allowed by the
language => UB => even though it seems to work in this instance, you
are just lucky the UB is actually doing what you expect.

--
VZ
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to