diff mbox series

[COMMITTED] The true side of x != x should set NAN.

Message ID 20221010124946.154152-3-aldyh@redhat.com
State New
Headers show
Series [COMMITTED] The true side of x != x should set NAN. | expand

Commit Message

Aldy Hernandez Oct. 10, 2022, 12:49 p.m. UTC
gcc/ChangeLog:

	* range-op-float.cc (foperator_not_equal::op1_range): Set NAN on
	TRUE side for x != x.
---
 gcc/range-op-float.cc | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/gcc/range-op-float.cc b/gcc/range-op-float.cc
index 91833d3f855..5ffe38da53a 100644
--- a/gcc/range-op-float.cc
+++ b/gcc/range-op-float.cc
@@ -497,14 +497,17 @@  bool
 foperator_not_equal::op1_range (frange &r, tree type,
 				const irange &lhs,
 				const frange &op2,
-				relation_kind) const
+				relation_kind rel) const
 {
   switch (get_bool_state (r, lhs, type))
     {
     case BRS_TRUE:
+      // The TRUE side of op1 != op1 implies op1 is NAN.
+      if (rel == VREL_EQ)
+	r.set_nan (type);
       // If the result is true, the only time we know anything is if
       // OP2 is a constant.
-      if (op2.singleton_p ())
+      else if (op2.singleton_p ())
 	{
 	  // This is correct even if op1 is NAN, because the following
 	  // range would be ~[tmp, tmp] with the NAN property set to