On Mon, 28 Dec 2020, Tamar Christina wrote:

> Hi All,
> 
> This fixes a bug with externals and linear_loads_p where I forgot to save the
> value before returning.
> 
> It also fixes handling of nodes with multiple children on a non VEC_PERM node.
> There the child iteration would already resolve the kind and the loads are All
> expected to be the same if valid so just return one.
> 
> Bootstrapped Regtested on aarch64-none-linux-gnu, x86_64-pc-linux-gnu
> and no issues.
> 
> Ok for master?

OK.

Richard.

> Thanks,
> Tamar
> 
> gcc/ChangeLog:
> 
>       * tree-vect-slp-patterns.c (linear_loads_p): Fix externals.
> 
> --- inline copy of patch -- 
> diff --git a/gcc/tree-vect-slp-patterns.c b/gcc/tree-vect-slp-patterns.c
> index 
> 7fd79d91c6ba4ccdbf361307a6105fb7e46aa961..235c0741c78b04f14725751ec399c0fdb32a0823
>  100644
> --- a/gcc/tree-vect-slp-patterns.c
> +++ b/gcc/tree-vect-slp-patterns.c
> @@ -229,6 +229,7 @@ linear_loads_p (slp_tree_to_load_perm_map_t *perm_cache, 
> slp_tree root)
>    else if (SLP_TREE_DEF_TYPE (root) != vect_internal_def)
>      {
>        retval.first = PERM_TOP;
> +      perm_cache->put (root, retval);
>        return retval;
>      }
>  
> @@ -241,6 +242,7 @@ linear_loads_p (slp_tree_to_load_perm_map_t *perm_cache, 
> slp_tree root)
>        complex_load_perm_t res = linear_loads_p (perm_cache, child);
>        kind = vect_merge_perms (kind, res.first);
>        /* Unknown and Top are not valid on blends as they produce no permute. 
>  */
> +      retval.first = kind;
>        if (kind == PERM_UNKNOWN || kind == PERM_TOP)
>       return retval;
>        all_loads.safe_push (res.second);
> @@ -258,7 +260,7 @@ linear_loads_p (slp_tree_to_load_perm_map_t *perm_cache, 
> slp_tree root)
>        retval.first = kind;
>        retval.second = nloads;
>      }
> -  else if (all_loads.length () == 1)
> +  else
>      {
>        retval.first = kind;
>        retval.second = all_loads[0];
> 
> 
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg,
Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg)

Reply via email to