public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Aldy Hernandez <aldyh@redhat.com>
To: GCC patches <gcc-patches@gcc.gnu.org>
Cc: Andrew MacLeod <amacleod@redhat.com>
Subject: Re: [PATCH] Remove type from vrange_storage::equal_p.
Date: Sat, 6 May 2023 07:42:56 +0200	[thread overview]
Message-ID: <908cd2fa-786d-f59e-e2d1-c4bbaa8562e3@redhat.com> (raw)
In-Reply-To: <20230503114145.662934-1-aldyh@redhat.com>

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); }


      reply	other threads:[~2023-05-06  5:43 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-03 11:41 Aldy Hernandez
2023-05-06  5:42 ` Aldy Hernandez [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=908cd2fa-786d-f59e-e2d1-c4bbaa8562e3@redhat.com \
    --to=aldyh@redhat.com \
    --cc=amacleod@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).