]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Clear unused flags in frange for undefined ranges.
authorAldy Hernandez <aldyh@redhat.com>
Wed, 21 Sep 2022 07:49:14 +0000 (09:49 +0200)
committerAldy Hernandez <aldyh@redhat.com>
Wed, 21 Sep 2022 11:27:19 +0000 (13:27 +0200)
gcc/ChangeLog:

* value-range.cc (frange::combine_zeros): Call set_undefined.
(frange::intersect_nans): Same.
(frange::intersect): Same.
(frange::verify_range): Undefined ranges do not have a type.
* value-range.h (frange::set_undefined): Clear NAN flags and type.

gcc/value-range.cc
gcc/value-range.h

index dc42b6d3120d2ac3f1c47d485e360a4b3894bd51..505eb9211a793f8c9cb355cb9acf60dfb8b07118 100644 (file)
@@ -422,7 +422,7 @@ frange::combine_zeros (const frange &r, bool union_p)
       if (maybe_isnan ())
        m_kind = VR_NAN;
       else
-       m_kind = VR_UNDEFINED;
+       set_undefined ();
       changed = true;
     }
   return changed;
@@ -506,7 +506,7 @@ frange::intersect_nans (const frange &r)
   if (maybe_isnan ())
     m_kind = VR_NAN;
   else
-    m_kind = VR_UNDEFINED;
+    set_undefined ();
   if (flag_checking)
     verify_range ();
   return true;
@@ -558,7 +558,7 @@ frange::intersect (const vrange &v)
       if (maybe_isnan ())
        m_kind = VR_NAN;
       else
-       m_kind = VR_UNDEFINED;
+       set_undefined ();
       if (flag_checking)
        verify_range ();
       return true;
@@ -696,7 +696,7 @@ frange::verify_range ()
   switch (m_kind)
     {
     case VR_UNDEFINED:
-      // m_type is ignored.
+      gcc_checking_assert (!m_type);
       return;
     case VR_VARYING:
       gcc_checking_assert (m_type);
index 325ed08f290d6ac1272a1066b5c8e1f748cf5cd7..3668b331187d2d0bb8e9b17a521282858110cab0 100644 (file)
@@ -1083,6 +1083,10 @@ inline void
 frange::set_undefined ()
 {
   m_kind = VR_UNDEFINED;
+  m_type = NULL;
+  m_pos_nan = false;
+  m_neg_nan = false;
+  // m_min and m_min are unitialized as they are REAL_VALUE_TYPE ??.
   if (flag_checking)
     verify_range ();
 }