Author benjamin.peterson
Recipients benjamin.peterson, haypo, mark.dickinson
Date 2017-09-10.20:57:02
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1505077022.85.0.592975554989.issue31373@psf.upfronthosting.co.za>
In-reply-to
Content
I'm going to undo the changes to getargs.c and floatobject.c. I think the pytime.c change is still correct because the doubles are explicitly rounded before conversion (and the old code checked for error > 1.0).

It's hard to win here I think. The clang undefined behavior sanitizer uses FLT_MAX to make its determination:
runtime error: value 3.40282e+38 is outside the range of representable values of type 'float'

So to satisfy it and preserve the old behavior, we would presumably have to implement the rounding ourselves, which doesn't seem like fun.

Annex F of C99, which defines the requirements for C implementations using IEE754, says, "the conversions for floating types provide  the IEC 60559 conversions between floating-point precisions.". Those are, of course, fully defined. It seems like the undefined behavior sanitizer is being overzealous when the target supports IEEE754.
History
Date User Action Args
2017-09-10 20:57:02benjamin.petersonsetrecipients: + benjamin.peterson, mark.dickinson, haypo
2017-09-10 20:57:02benjamin.petersonsetmessageid: <1505077022.85.0.592975554989.issue31373@psf.upfronthosting.co.za>
2017-09-10 20:57:02benjamin.petersonlinkissue31373 messages
2017-09-10 20:57:02benjamin.petersoncreate