[Mesa-dev] [PATCH v2 2/3] nir: fix nir_opt_copy_prop_vars() for arrays of arrays

funfunctor at folklore1984.net funfunctor at folklore1984.net
Mon Jul 3 14:02:47 UTC 2017


On 2017-07-03 08:47, Timothy Arceri wrote:
> Previous we only incremented the guide for a single
> dimension/wildcard.
> 
> V2: rework logic to avoid code duplication

Reviewed-by: Edward O'Callaghan <funfunctor at folklore1984.net>

> ---
>  src/compiler/nir/nir_opt_copy_prop_vars.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/src/compiler/nir/nir_opt_copy_prop_vars.c
> b/src/compiler/nir/nir_opt_copy_prop_vars.c
> index 7f17469..89ddc8d 100644
> --- a/src/compiler/nir/nir_opt_copy_prop_vars.c
> +++ b/src/compiler/nir/nir_opt_copy_prop_vars.c
> @@ -469,8 +469,8 @@ specialize_wildcards(nir_deref_var *deref,
>     nir_deref_var *ret = nir_deref_var_create(mem_ctx, deref->var);
> 
>     nir_deref *deref_tail = deref->deref.child;
> -   nir_deref *guide_tail = guide->deref.child;
> -   nir_deref *spec_tail = specific->deref.child;
> +   nir_deref *guide_tail = &guide->deref;
> +   nir_deref *spec_tail = &specific->deref;
>     nir_deref *ret_tail = &ret->deref;
>     while (deref_tail) {
>        switch (deref_tail->deref_type) {
> @@ -495,14 +495,14 @@ specialize_wildcards(nir_deref_var *deref,
>               * the entry deref to find its corresponding wildcard and 
> fill
>               * this slot in with the value from the src.
>               */
> -            while (guide_tail) {
> +            while (guide_tail->child) {
> +               guide_tail = guide_tail->child;
> +               spec_tail = spec_tail->child;
> +
>                 if (guide_tail->deref_type == nir_deref_type_array &&
>                     nir_deref_as_array(guide_tail)->deref_array_type ==
>                     nir_deref_array_type_wildcard)
>                    break;
> -
> -               guide_tail = guide_tail->child;
> -               spec_tail = spec_tail->child;
>              }
> 
>              nir_deref_array *spec_arr = nir_deref_as_array(spec_tail);



More information about the mesa-dev mailing list