https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126637
Aldy Hernandez <aldyh at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|unassigned at gcc dot gnu.org |aldyh at gcc dot gnu.org
--- Comment #3 from Aldy Hernandez <aldyh at gcc dot gnu.org> ---
It looks like both operator_equal::fold_range and
operator_not_equal::fold_range are special casing signed zeros, and are using
the hull, instead of the inner bounds.
else if (real_iszero (&op1.lower_bound ())
&& real_iszero (&op1.upper_bound ())
&& real_iszero (&op2.lower_bound ())
&& real_iszero (&op2.upper_bound ())
&& !maybe_isnan (op1, op2))
// [-0.0, 0.0] == [-0.0, 0.0] or similar.
r = range_true (type);