On Mon, Sep 6, 2021 at 4:48 AM Di Zhao OS <diz...@os.amperecomputing.com> wrote:
>
> If the first predicate value is different and copied, the comparison will 
> then be between val->result and the copied one, which seems to be a bug. That 
> can cause inserting extra vn_pvals.
>
> Bootstrapped and tested on x86_64-unknown-linux-gnu.

OK.

Thanks,
Richard.

> Regards,
> Di Zhao
>
> gcc/ChangeLog:
>
>         * tree-ssa-sccvn.c (vn_nary_op_insert_into): fix result compare
> ---
>  gcc/tree-ssa-sccvn.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
> index 2357bbdbf90..bfa516b6cf9 100644
> --- a/gcc/tree-ssa-sccvn.c
> +++ b/gcc/tree-ssa-sccvn.c
> @@ -4105,7 +4105,7 @@ vn_nary_op_insert_into (vn_nary_op_t vno, 
> vn_nary_op_table_type *table,
>           bool found = false;
>           for (vn_pval *val = (*slot)->u.values; val; val = val->next)
>             {
> -             if (expressions_equal_p (val->result, vno->u.values->result))
> +             if (expressions_equal_p (val->result, nval->result))
>                 {
>                   found = true;
>                   for (unsigned i = 0; i < val->n; ++i)
> --
> 2.25.1
>
>
>

Reply via email to