diff mbox series

Remove type from vrange_storage::equal_p.

Message ID 20230503114145.662934-1-aldyh@redhat.com
State New
Headers show
Series Remove type from vrange_storage::equal_p. | expand

Commit Message

Aldy Hernandez May 3, 2023, 11:41 a.m. UTC
[Andrew, since you suggested this, is this what you had in mind?].

The equal_p method in vrange_storage is only used to compare ranges
that are the same type.  No sense passing the type if it can be
determined from the range being compared.

gcc/ChangeLog:

	* gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
	pass type to vrange_storage::equal_p.
	* value-range-storage.cc (vrange_storage::equal_p): Remove type.
	(irange_storage::equal_p): Same.
	(frange_storage::equal_p): Same.
	* value-range-storage.h (class frange_storage): Same.
---
 gcc/gimple-range-cache.cc  |  2 +-
 gcc/value-range-storage.cc | 28 +++++++++++-----------------
 gcc/value-range-storage.h  |  6 +++---
 3 files changed, 15 insertions(+), 21 deletions(-)

Comments

Aldy Hernandez May 6, 2023, 5:42 a.m. UTC | #1
On 5/3/23 13:41, Aldy Hernandez wrote:
> [Andrew, since you suggested this, is this what you had in mind?].

Pushed.  You can comment when you're back from vacation :).

Aldy
> 
> The equal_p method in vrange_storage is only used to compare ranges
> that are the same type.  No sense passing the type if it can be
> determined from the range being compared.
> 
> gcc/ChangeLog:
> 
> 	* gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
> 	pass type to vrange_storage::equal_p.
> 	* value-range-storage.cc (vrange_storage::equal_p): Remove type.
> 	(irange_storage::equal_p): Same.
> 	(frange_storage::equal_p): Same.
> 	* value-range-storage.h (class frange_storage): Same.
> ---
>   gcc/gimple-range-cache.cc  |  2 +-
>   gcc/value-range-storage.cc | 28 +++++++++++-----------------
>   gcc/value-range-storage.h  |  6 +++---
>   3 files changed, 15 insertions(+), 21 deletions(-)
> 
> diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc
> index 92622fc5000..07c69ef858a 100644
> --- a/gcc/gimple-range-cache.cc
> +++ b/gcc/gimple-range-cache.cc
> @@ -320,7 +320,7 @@ sbr_sparse_bitmap::set_bb_range (const_basic_block bb, const vrange &r)
>   
>     // Loop thru the values to see if R is already present.
>     for (int x = 0; x < SBR_NUM; x++)
> -    if (!m_range[x] || m_range[x]->equal_p (r, m_type))
> +    if (!m_range[x] || m_range[x]->equal_p (r))
>         {
>   	if (!m_range[x])
>   	  m_range[x] = m_range_allocator->clone (r);
> diff --git a/gcc/value-range-storage.cc b/gcc/value-range-storage.cc
> index 7d2de5e8384..1e06a7acc8d 100644
> --- a/gcc/value-range-storage.cc
> +++ b/gcc/value-range-storage.cc
> @@ -206,20 +206,22 @@ vrange_storage::fits_p (const vrange &r) const
>     return false;
>   }
>   
> -// Return TRUE if the range in storage is equal to R.
> +// Return TRUE if the range in storage is equal to R.  It is the
> +// caller's responsibility to verify that the type of the range in
> +// storage matches that of R.
>   
>   bool
> -vrange_storage::equal_p (const vrange &r, tree type) const
> +vrange_storage::equal_p (const vrange &r) const
>   {
>     if (is_a <irange> (r))
>       {
>         const irange_storage *s = static_cast <const irange_storage *> (this);
> -      return s->equal_p (as_a <irange> (r), type);
> +      return s->equal_p (as_a <irange> (r));
>       }
>     if (is_a <frange> (r))
>       {
>         const frange_storage *s = static_cast <const frange_storage *> (this);
> -      return s->equal_p (as_a <frange> (r), type);
> +      return s->equal_p (as_a <frange> (r));
>       }
>     gcc_unreachable ();
>   }
> @@ -375,21 +377,17 @@ irange_storage::get_irange (irange &r, tree type) const
>   }
>   
>   bool
> -irange_storage::equal_p (const irange &r, tree type) const
> +irange_storage::equal_p (const irange &r) const
>   {
>     if (m_kind == VR_UNDEFINED || r.undefined_p ())
>       return m_kind == r.m_kind;
>     if (m_kind == VR_VARYING || r.varying_p ())
> -    return m_kind == r.m_kind && types_compatible_p (r.type (), type);
> -
> -  tree rtype = r.type ();
> -  if (!types_compatible_p (rtype, type))
> -    return false;
> +    return m_kind == r.m_kind;
>   
>     // ?? We could make this faster by doing the comparison in place,
>     // without going through get_irange.
>     int_range_max tmp;
> -  get_irange (tmp, rtype);
> +  get_irange (tmp, r.type ());
>     return tmp == r;
>   }
>   
> @@ -526,17 +524,13 @@ frange_storage::get_frange (frange &r, tree type) const
>   }
>   
>   bool
> -frange_storage::equal_p (const frange &r, tree type) const
> +frange_storage::equal_p (const frange &r) const
>   {
>     if (r.undefined_p ())
>       return m_kind == VR_UNDEFINED;
>   
> -  tree rtype = type;
> -  if (!types_compatible_p (rtype, type))
> -    return false;
> -
>     frange tmp;
> -  get_frange (tmp, rtype);
> +  get_frange (tmp, r.type ());
>     return tmp == r;
>   }
>   
> diff --git a/gcc/value-range-storage.h b/gcc/value-range-storage.h
> index 4ec0da73059..f25489f32c1 100644
> --- a/gcc/value-range-storage.h
> +++ b/gcc/value-range-storage.h
> @@ -54,7 +54,7 @@ public:
>     void get_vrange (vrange &r, tree type) const;
>     void set_vrange (const vrange &r);
>     bool fits_p (const vrange &r) const;
> -  bool equal_p (const vrange &r, tree type) const;
> +  bool equal_p (const vrange &r) const;
>   protected:
>     // Stack initialization disallowed.
>     vrange_storage () { }
> @@ -68,7 +68,7 @@ public:
>     static irange_storage *alloc (vrange_internal_alloc &, const irange &);
>     void set_irange (const irange &r);
>     void get_irange (irange &r, tree type) const;
> -  bool equal_p (const irange &r, tree type) const;
> +  bool equal_p (const irange &r) const;
>     bool fits_p (const irange &r) const;
>     void dump () const;
>   private:
> @@ -111,7 +111,7 @@ class frange_storage : public vrange_storage
>     static frange_storage *alloc (vrange_internal_alloc &, const frange &r);
>     void set_frange (const frange &r);
>     void get_frange (frange &r, tree type) const;
> -  bool equal_p (const frange &r, tree type) const;
> +  bool equal_p (const frange &r) const;
>     bool fits_p (const frange &) const;
>    private:
>     frange_storage (const frange &r) { set_frange (r); }
diff mbox series

Patch

diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc
index 92622fc5000..07c69ef858a 100644
--- a/gcc/gimple-range-cache.cc
+++ b/gcc/gimple-range-cache.cc
@@ -320,7 +320,7 @@  sbr_sparse_bitmap::set_bb_range (const_basic_block bb, const vrange &r)
 
   // Loop thru the values to see if R is already present.
   for (int x = 0; x < SBR_NUM; x++)
-    if (!m_range[x] || m_range[x]->equal_p (r, m_type))
+    if (!m_range[x] || m_range[x]->equal_p (r))
       {
 	if (!m_range[x])
 	  m_range[x] = m_range_allocator->clone (r);
diff --git a/gcc/value-range-storage.cc b/gcc/value-range-storage.cc
index 7d2de5e8384..1e06a7acc8d 100644
--- a/gcc/value-range-storage.cc
+++ b/gcc/value-range-storage.cc
@@ -206,20 +206,22 @@  vrange_storage::fits_p (const vrange &r) const
   return false;
 }
 
-// Return TRUE if the range in storage is equal to R.
+// Return TRUE if the range in storage is equal to R.  It is the
+// caller's responsibility to verify that the type of the range in
+// storage matches that of R.
 
 bool
-vrange_storage::equal_p (const vrange &r, tree type) const
+vrange_storage::equal_p (const vrange &r) const
 {
   if (is_a <irange> (r))
     {
       const irange_storage *s = static_cast <const irange_storage *> (this);
-      return s->equal_p (as_a <irange> (r), type);
+      return s->equal_p (as_a <irange> (r));
     }
   if (is_a <frange> (r))
     {
       const frange_storage *s = static_cast <const frange_storage *> (this);
-      return s->equal_p (as_a <frange> (r), type);
+      return s->equal_p (as_a <frange> (r));
     }
   gcc_unreachable ();
 }
@@ -375,21 +377,17 @@  irange_storage::get_irange (irange &r, tree type) const
 }
 
 bool
-irange_storage::equal_p (const irange &r, tree type) const
+irange_storage::equal_p (const irange &r) const
 {
   if (m_kind == VR_UNDEFINED || r.undefined_p ())
     return m_kind == r.m_kind;
   if (m_kind == VR_VARYING || r.varying_p ())
-    return m_kind == r.m_kind && types_compatible_p (r.type (), type);
-
-  tree rtype = r.type ();
-  if (!types_compatible_p (rtype, type))
-    return false;
+    return m_kind == r.m_kind;
 
   // ?? We could make this faster by doing the comparison in place,
   // without going through get_irange.
   int_range_max tmp;
-  get_irange (tmp, rtype);
+  get_irange (tmp, r.type ());
   return tmp == r;
 }
 
@@ -526,17 +524,13 @@  frange_storage::get_frange (frange &r, tree type) const
 }
 
 bool
-frange_storage::equal_p (const frange &r, tree type) const
+frange_storage::equal_p (const frange &r) const
 {
   if (r.undefined_p ())
     return m_kind == VR_UNDEFINED;
 
-  tree rtype = type;
-  if (!types_compatible_p (rtype, type))
-    return false;
-
   frange tmp;
-  get_frange (tmp, rtype);
+  get_frange (tmp, r.type ());
   return tmp == r;
 }
 
diff --git a/gcc/value-range-storage.h b/gcc/value-range-storage.h
index 4ec0da73059..f25489f32c1 100644
--- a/gcc/value-range-storage.h
+++ b/gcc/value-range-storage.h
@@ -54,7 +54,7 @@  public:
   void get_vrange (vrange &r, tree type) const;
   void set_vrange (const vrange &r);
   bool fits_p (const vrange &r) const;
-  bool equal_p (const vrange &r, tree type) const;
+  bool equal_p (const vrange &r) const;
 protected:
   // Stack initialization disallowed.
   vrange_storage () { }
@@ -68,7 +68,7 @@  public:
   static irange_storage *alloc (vrange_internal_alloc &, const irange &);
   void set_irange (const irange &r);
   void get_irange (irange &r, tree type) const;
-  bool equal_p (const irange &r, tree type) const;
+  bool equal_p (const irange &r) const;
   bool fits_p (const irange &r) const;
   void dump () const;
 private:
@@ -111,7 +111,7 @@  class frange_storage : public vrange_storage
   static frange_storage *alloc (vrange_internal_alloc &, const frange &r);
   void set_frange (const frange &r);
   void get_frange (frange &r, tree type) const;
-  bool equal_p (const frange &r, tree type) const;
+  bool equal_p (const frange &r) const;
   bool fits_p (const frange &) const;
  private:
   frange_storage (const frange &r) { set_frange (r); }