Do not fold __builtin_signbit if NAN is a possibility.
I had some queued up work to try harder to keep the sign bit up to date in the presence of NANs, but after the discussion with Richi regarding the representation of NAN and signs in the frange, I've decided to put it aside until after Cauldron, since it'll probably get rewritten anyhow. So for now, the sign property in the frange is not applicable to NANs. Right now the only user of the sign bit that affects generated code (apart from signed zeros) is __builtin_sign, so I'm just checking for NAN there. Signed zeros continue working as before. Regstrapped and mpfr checked on x86-64 Linux. gcc/ChangeLog: * gimple-range-fold.cc (fold_using_range::range_of_builtin_int_call): Ignore sign bit when there's the possibility of a NAN.
This commit is contained in:
parent
1de9aa4552
commit
5f895f2217
1 changed files with 3 additions and 1 deletions
|
@ -1029,7 +1029,9 @@ fold_using_range::range_of_builtin_int_call (irange &r, gcall *call,
|
|||
frange tmp;
|
||||
if (src.get_operand (tmp, arg))
|
||||
{
|
||||
if (tmp.get_signbit ().varying_p ())
|
||||
if (tmp.get_signbit ().varying_p ()
|
||||
// FIXME: We don't support signed NANs yet.
|
||||
|| !tmp.get_nan ().no_p ())
|
||||
return false;
|
||||
if (tmp.get_signbit ().yes_p ())
|
||||
r.set_nonzero (type);
|
||||
|
|
Loading…
Add table
Reference in a new issue