[PATCH] Don't fold nextafter/nexttoward if -ftrapping-math or -fmath-errno if they produce denormal results (PR c/86420)

Marc Glisse marc.glisse@inria.fr
Sat Jul 7 11:31:00 GMT 2018


On Sat, 7 Jul 2018, Jakub Jelinek wrote:

> On Sat, Jul 07, 2018 at 11:55:17AM +0200, Marc Glisse wrote:
>> On Sat, 7 Jul 2018, Jakub Jelinek wrote:
>>
>>> 2018-07-07  Jakub Jelinek  <jakub@redhat.com>
>>>
>>> 	PR c/86420
>>> 	* real.c (real_nextafter): Return true if result is denormal.
>>
>> I have a question on the side: would it be hard / useful, in cases where
>> nextafter may set errno or some exception flag, to fold the result to a
>> constant while keeping the function call (ignoring the value it returns)? To
>> clarify, I mean replace
>>
>> _2 = nextafter(DBL_DENORM_MIN, 0);
>>
>> with
>>
>> nextafter(DBL_DENORM_MIN, 0);
>> _2 = 0;
>>
>> I think we already do that for some other calls, although I can't remember
>> where. The point would be that we have the value of _2 and can keep folding
>> its uses.
>
> For errno purposes alone that would be possible, but the function is marked
> #define ATTR_MATHFN_ERRNO (flag_errno_math ? \
>        ATTR_NOTHROW_LEAF_LIST : ATTR_CONST_NOTHROW_LEAF_LIST)
> and thus with -ftrapping-math -fno-math-errno I'm afraid we'd immediately
> DCE the call in the second form (without lhs).

That looks like a problem we'll have to fix eventually. But not as part of 
this patch indeed.

-- 
Marc Glisse



More information about the Gcc-patches mailing list