On Thu, Oct 28, 2021 at 5:25 PM Aldy Hernandez via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> Same thing as the relational change.  Walk any equivalences that have
> been registered on the path, and remove the name being killed.  The
> only reason we had added the equivalence with itself earlier is so we
> wouldn't search any further in the equivalency list.  So if we are
> removing all references to it, then we no longer need to add a "kill"
> record.
>
> Will push pending tests on x86-64 Linux.
>
> Co-authored-by: Andrew MacLeod <amacl...@redhat.com>
>
> gcc/ChangeLog:
>
>         * value-relation.cc (path_oracle::killing_def): Walk the
>         equivalency list and remove SSA from any equivalencies.
> ---
>  gcc/value-relation.cc | 20 ++++++++++----------
>  1 file changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/gcc/value-relation.cc b/gcc/value-relation.cc
> index 0ad4f7a9495..512b51ce022 100644
> --- a/gcc/value-relation.cc
> +++ b/gcc/value-relation.cc
> @@ -1298,17 +1298,17 @@ path_oracle::killing_def (tree ssa)
>      }
>
>    unsigned v = SSA_NAME_VERSION (ssa);
> -  bitmap b = BITMAP_ALLOC (&m_bitmaps);
> -  bitmap_set_bit (b, v);
> -  equiv_chain *ptr = (equiv_chain *) obstack_alloc (&m_chain_obstack,
> -                                                   sizeof (equiv_chain));
> -  ptr->m_names = b;
> -  ptr->m_bb = NULL;
> -  ptr->m_next = m_equiv.m_next;
> -  m_equiv.m_next = ptr;
> -  bitmap_ior_into (m_equiv.m_names, b);
>
> -  // Walk the relation list an remove SSA from any relations.
> +  // Walk the equivalency list and remove SSA from any equivalencies.
> +  if (bitmap_bit_p (m_equiv.m_names, v))
> +    {
> +      bitmap_clear_bit (m_equiv.m_names, v);
> +      for (equiv_chain *ptr = m_equiv.m_next; ptr; ptr = ptr->m_next)
> +       if (bitmap_bit_p (ptr->m_names, v))
> +         bitmap_clear_bit (ptr->m_names, v);

What's the reason to do both lookup and clear?  Just bitmap_clear_bit ()
should be good enough.

> +    }
> +
> +  // Walk the relation list and remove SSA from any relations.
>    if (!bitmap_bit_p (m_relations.m_names, v))
>      return;
>
> --
> 2.31.1
>

Reply via email to