[Bug tree-optimization/108447] [13 Regression] glibc math/test-*-iseqsig failures
amacleod at redhat dot com
gcc-bugzilla@gcc.gnu.org
Fri Jan 27 14:41:12 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108447
Andrew Macleod <amacleod at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution|--- |FIXED
--- Comment #27 from Andrew Macleod <amacleod at redhat dot com> ---
Fixed with the simple approach in the email thread.
This boils down to a single place where we are trying to do things with
relations in ranger that are simply not safe when we need to honor NANs.
I think we can avoid all the other shuffling of relations, and simply not
perform this optimization when it comes to floats.
The case the routine handles is:
c_2 = a_6 > b_7
c_3 = a_6 < b_7
c_4 = c_2 && c_3
c_2 and c_3 can never be true at the same time, Therefore c_4 can always
resolve to false based purely on the relations.
Range-ops is unable to do this optimization directly as it requires examining
things from outside the statement, and is not easily communicated a simple
relation to operator_logical_and.
This routine proceeds to look at the definitions of c_2 and c_3, tries to
determine if there are common operands, and queries for any relations between
them. If it turns out there is something, depending on whether its && or || ,
we use intersection or union to determine if the result of the logical
operation can be folded. If HONOR_NANS is true for the float type, then we
cannot do this optimization, and bail early.
More information about the Gcc-bugs
mailing list