From fac9dd1b93829a84f634525ce41f18953fe92433 Mon Sep 17 00:00:00 2001 From: Caio Marcelo de Oliveira Filho Date: Tue, 10 Apr 2018 23:13:39 -0700 Subject: [PATCH] nir/vars_to_ssa: Remove an unnecessary deref_arry_type check Only fully-qualified direct derefs, collected in direct_deref_nodes, are checked for aliasing, so it is already known up front that they have only array derefs of type direct. Reviewed-by: Jason Ekstrand --- src/compiler/nir/nir_lower_vars_to_ssa.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/compiler/nir/nir_lower_vars_to_ssa.c b/src/compiler/nir/nir_lower_vars_to_ssa.c index f327a14..970eb05 100644 --- a/src/compiler/nir/nir_lower_vars_to_ssa.c +++ b/src/compiler/nir/nir_lower_vars_to_ssa.c @@ -298,15 +298,16 @@ deref_may_be_aliased_node(struct deref_node *node, nir_deref *deref, switch (deref->child->deref_type) { case nir_deref_type_array: { nir_deref_array *arr = nir_deref_as_array(deref->child); - if (arr->deref_array_type == nir_deref_array_type_indirect) - return true; + + /* This is a child of one of the derefs in direct_deref_nodes, + * so we know it is direct. + */ + assert(arr->deref_array_type == nir_deref_array_type_direct); /* If there is an indirect at this level, we're aliased. */ if (node->indirect) return true; - assert(arr->deref_array_type == nir_deref_array_type_direct); - if (node->children[arr->base_offset] && deref_may_be_aliased_node(node->children[arr->base_offset], deref->child, state)) -- 2.7.4