[PATCH] Fix undefined behaviour in lround,llround.
Dave Korn
dave.korn.cygwin@gmail.com
Thu Jul 22 21:11:00 GMT 2010
On 19/07/2010 11:37, Corinna Vinschen wrote:
> On Jul 17 18:16, Dave Korn wrote:
>> Same changelog as before. OK now/with/without above-mentioned minor
>> alterations?
>
> The reason not to use `unsigned long long tmp' sounds good to me.
> Keeping the SAFE_LEFT_SHIFT in the header doesn't hurt and might come in
> handy at one point. So, yes, that looks ok to apply, Dave, especially
> with the annotations (which should be mentioned in the ChangeLog).
Thanks, applied with the following ChangeLog entry:
newlib/ChangeLog:
* libm/common/fdlibm.h (SAFE_LEFT_SHIFT): New macro definition.
(SAFE_RIGHT_SHIFT): Likewise.
* libm/common/s_llround.c (llround): Annotate shift operations with
possible shift amount ranges, and use SAFE_RIGHT_SHIFT to avoid
undefined behaviour.
* libm/common/s_lround.c (lround): Likewise.
cheers,
DaveK
More information about the Newlib
mailing list