diff mbox series

[COMMITTED] The caller to irange::intersect (wide_int, wide_int) must normalize the range.

Message ID 20230707075750.1248045-2-aldyh@redhat.com
State New
Headers show
Series [COMMITTED] The caller to irange::intersect (wide_int, wide_int) must normalize the range. | expand

Commit Message

Aldy Hernandez July 7, 2023, 7:57 a.m. UTC
Per the function comment, the caller to intersect(wide_int, wide_int)
must handle the mask.  This means it must also normalize the range if
anything changed.

gcc/ChangeLog:

	* value-range.cc (irange::intersect): Leave normalization to
	caller.
---
 gcc/value-range.cc | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/gcc/value-range.cc b/gcc/value-range.cc
index 8e5607a7eeb..fbc0c7a6f82 100644
--- a/gcc/value-range.cc
+++ b/gcc/value-range.cc
@@ -1475,6 +1475,8 @@  irange::intersect (const vrange &v)
 	return true;
 
       res |= intersect_bitmask (r);
+      if (res)
+	normalize_kind ();
       return res;
     }
 
@@ -1574,7 +1576,7 @@  irange::intersect (const vrange &v)
 // Multirange intersect for a specified wide_int [lb, ub] range.
 // Return TRUE if intersect changed anything.
 //
-// NOTE: It is the caller's responsibility to intersect the nonzero masks.
+// NOTE: It is the caller's responsibility to intersect the mask.
 
 bool
 irange::intersect (const wide_int& lb, const wide_int& ub)
@@ -1633,7 +1635,8 @@  irange::intersect (const wide_int& lb, const wide_int& ub)
     }
 
   m_kind = VR_RANGE;
-  normalize_kind ();
+  // The caller must normalize and verify the range, as the bitmask
+  // still needs to be handled.
   return true;
 }