Use value_range_base::equal_p in value_range_base::operator== so we can handle
authorAldy Hernandez <aldyh@redhat.com>
Tue, 5 Nov 2019 03:35:27 +0000 (03:35 +0000)
committerAldy Hernandez <aldyh@gcc.gnu.org>
Tue, 5 Nov 2019 03:35:27 +0000 (03:35 +0000)
symbolics without dying.

From-SVN: r277812

gcc/ChangeLog
gcc/tree-vrp.c

index e726ff6d0a0f5a6b5b47e1204b1f3df6e66d3491..1c2fff162950ea19079ffc089f434f5ef6900f89 100644 (file)
@@ -1,3 +1,9 @@
+2019-11-05  Aldy Hernandez  <aldyh@redhat.com>
+
+       * tree-vrp.c (value_range_base::operator==): Use equal_p to
+       properly handle symbolics.
+       (range_compatible_p): Remove.
+
 2019-11-04  Kamlesh Kumar  <kamleshbhalui@gmail.com>
 
        * common.opt (-fabi-version): Document =14.
index 452895bfc2481c31654460a57886f2a69dae4f5d..a6d44e9dc6d1423746d2cb24a592bf6c93844e03 100644 (file)
@@ -6319,33 +6319,10 @@ value_range_base::intersect (const value_range_base &r)
     dump_flags |= TDF_DETAILS;
 }
 
-/* Return TRUE if two types are compatible for range operations.  */
-
-static bool
-range_compatible_p (tree t1, tree t2)
-{
-  if (POINTER_TYPE_P (t1) && POINTER_TYPE_P (t2))
-    return true;
-
-  return types_compatible_p (t1, t2);
-}
-
 bool
 value_range_base::operator== (const value_range_base &r) const
 {
-  if (undefined_p ())
-    return r.undefined_p ();
-
-  if (num_pairs () != r.num_pairs ()
-      || !range_compatible_p (type (), r.type ()))
-    return false;
-
-  for (unsigned p = 0; p < num_pairs (); p++)
-    if (wi::ne_p (lower_bound (p), r.lower_bound (p))
-       || wi::ne_p (upper_bound (p), r.upper_bound (p)))
-      return false;
-
-  return true;
+  return equal_p (r);
 }
 
 /* Visit all arguments for PHI node PHI that flow through executable