[Mesa-dev] [PATCH] nir/vars_to_ssa: Handle missing struct members in foreach_deref_node
Timothy Arceri
tarceri at itsqueeze.com
Wed Jul 19 00:01:22 UTC 2017
Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>
On 19/07/17 09:50, Jason Ekstrand wrote:
> This can happen if, for instance, you have an array of structs and there
> are both direct and wildcard references to the same struct and some
> members only have direct or only have indirect.
> ---
> src/compiler/nir/nir_lower_vars_to_ssa.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/src/compiler/nir/nir_lower_vars_to_ssa.c b/src/compiler/nir/nir_lower_vars_to_ssa.c
> index e5a12eb..e8cfe30 100644
> --- a/src/compiler/nir/nir_lower_vars_to_ssa.c
> +++ b/src/compiler/nir/nir_lower_vars_to_ssa.c
> @@ -245,8 +245,12 @@ foreach_deref_node_worker(struct deref_node *node, nir_deref *deref,
>
> case nir_deref_type_struct: {
> nir_deref_struct *str = nir_deref_as_struct(deref->child);
> - return foreach_deref_node_worker(node->children[str->index],
> - deref->child, cb, state);
> + if (node->children[str->index] &&
> + !foreach_deref_node_worker(node->children[str->index],
> + deref->child, cb, state))
> + return false;
> +
> + return true;
> }
>
> default:
>
More information about the mesa-dev
mailing list