public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r13-3391] Always check result from build_<COND> in range-op-float.cc
@ 2022-10-19 21:16 Aldy Hernandez
  0 siblings, 0 replies; only message in thread
From: Aldy Hernandez @ 2022-10-19 21:16 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:f0068278f7e75507c1f40e7c829d7a9d6ade269c

commit r13-3391-gf0068278f7e75507c1f40e7c829d7a9d6ade269c
Author: Aldy Hernandez <aldyh@redhat.com>
Date:   Wed Oct 19 17:05:39 2022 +0200

    Always check result from build_<COND> in range-op-float.cc
    
    A result of false from build_<COND> in range-ops means the result is
    final and needs no further adjustments.  This patch documents this,
    and changes all uses to check the result.  There should be no change
    in functionality.
    
    gcc/ChangeLog:
    
            * range-op-float.cc (build_le): Document result.
            (build_lt): Same.
            (build_ge): Same.
            (foperator_ge::op2_range): Check result of build_*.
            (foperator_unordered_le::op1_range): Same.
            (foperator_unordered_le::op2_range): Same.
            (foperator_unordered_gt::op1_range): Same.
            (foperator_unordered_gt::op2_range): Same.
            (foperator_unordered_ge::op1_range): Same.
            (foperator_unordered_ge::op2_range): Same.

Diff:
---
 gcc/range-op-float.cc | 47 ++++++++++++++++++++++++++---------------------
 1 file changed, 26 insertions(+), 21 deletions(-)

diff --git a/gcc/range-op-float.cc b/gcc/range-op-float.cc
index e7334794b0d..0605a908684 100644
--- a/gcc/range-op-float.cc
+++ b/gcc/range-op-float.cc
@@ -239,7 +239,9 @@ frange_add_zeros (frange &r, tree type)
     }
 }
 
-// Build a range that is <= VAL and store it in R.
+// Build a range that is <= VAL and store it in R.  Return TRUE if
+// further changes may be needed for R, or FALSE if R is in its final
+// form.
 
 static bool
 build_le (frange &r, tree type, const frange &val)
@@ -255,7 +257,9 @@ build_le (frange &r, tree type, const frange &val)
   return true;
 }
 
-// Build a range that is < VAL and store it in R.
+// Build a range that is < VAL and store it in R.  Return TRUE if
+// further changes may be needed for R, or FALSE if R is in its final
+// form.
 
 static bool
 build_lt (frange &r, tree type, const frange &val)
@@ -277,7 +281,9 @@ build_lt (frange &r, tree type, const frange &val)
   return true;
 }
 
-// Build a range that is >= VAL and store it in R.
+// Build a range that is >= VAL and store it in R.  Return TRUE if
+// further changes may be needed for R, or FALSE if R is in its final
+// form.
 
 static bool
 build_ge (frange &r, tree type, const frange &val)
@@ -293,7 +299,9 @@ build_ge (frange &r, tree type, const frange &val)
   return true;
 }
 
-// Build a range that is > VAL and store it in R.
+// Build a range that is > VAL and store it in R.  Return TRUE if
+// further changes may be needed for R, or FALSE if R is in its final
+// form.
 
 static bool
 build_gt (frange &r, tree type, const frange &val)
@@ -979,11 +987,8 @@ foperator_ge::op2_range (frange &r, tree type,
       // The TRUE side of NAN >= x is unreachable.
       if (op1.known_isnan ())
 	r.set_undefined ();
-      else
-	{
-	  build_le (r, type, op1);
-	  r.clear_nan ();
-	}
+      else if (build_le (r, type, op1))
+	r.clear_nan ();
       break;
 
     case BRS_FALSE:
@@ -1354,8 +1359,8 @@ foperator_unordered_le::op1_range (frange &r, tree type,
       break;
 
     case BRS_FALSE:
-      build_gt (r, type, op2);
-      r.clear_nan ();
+      if (build_gt (r, type, op2))
+	r.clear_nan ();
       break;
 
     default:
@@ -1378,8 +1383,8 @@ foperator_unordered_le::op2_range (frange &r,
       break;
 
     case BRS_FALSE:
-      build_lt (r, type, op1);
-      r.clear_nan ();
+      if (build_lt (r, type, op1))
+	r.clear_nan ();
       break;
 
     default:
@@ -1437,8 +1442,8 @@ foperator_unordered_gt::op1_range (frange &r,
       break;
 
     case BRS_FALSE:
-      build_le (r, type, op2);
-      r.clear_nan ();
+      if (build_le (r, type, op2))
+	r.clear_nan ();
       break;
 
     default:
@@ -1461,8 +1466,8 @@ foperator_unordered_gt::op2_range (frange &r,
       break;
 
     case BRS_FALSE:
-      build_ge (r, type, op1);
-      r.clear_nan ();
+      if (build_ge (r, type, op1))
+	r.clear_nan ();
       break;
 
     default:
@@ -1520,8 +1525,8 @@ foperator_unordered_ge::op1_range (frange &r,
       break;
 
     case BRS_FALSE:
-      build_lt (r, type, op2);
-      r.clear_nan ();
+      if (build_lt (r, type, op2))
+	r.clear_nan ();
       break;
 
     default:
@@ -1543,8 +1548,8 @@ foperator_unordered_ge::op2_range (frange &r, tree type,
       break;
 
     case BRS_FALSE:
-      build_gt (r, type, op1);
-      r.clear_nan ();
+      if (build_gt (r, type, op1))
+	r.clear_nan ();
       break;
 
     default:

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-10-19 21:16 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-19 21:16 [gcc r13-3391] Always check result from build_<COND> in range-op-float.cc Aldy Hernandez

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).