From: Aldy Hernandez Date: Fri, 30 Jun 2023 18:24:38 +0000 (+0200) Subject: The caller to irange::intersect (wide_int, wide_int) must normalize the range. X-Git-Tag: basepoints/gcc-15~7761 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bf3469b6474f6cff168c1e9171879d29a8296fae;p=thirdparty%2Fgcc.git The caller to irange::intersect (wide_int, wide_int) must normalize the range. 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. --- diff --git a/gcc/value-range.cc b/gcc/value-range.cc index 8e5607a7eeb6..fbc0c7a6f821 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; }