[Mesa-dev] [PATCH v3 099/104] nir/copy_prop_vars: Re-order some logic in compare_derefs

Jason Ekstrand jason at jlekstrand.net
Tue Apr 3 18:39:43 UTC 2018


---
 src/compiler/nir/nir_opt_copy_prop_vars.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/compiler/nir/nir_opt_copy_prop_vars.c b/src/compiler/nir/nir_opt_copy_prop_vars.c
index cc8f00f..dca1632 100644
--- a/src/compiler/nir/nir_opt_copy_prop_vars.c
+++ b/src/compiler/nir/nir_opt_copy_prop_vars.c
@@ -151,19 +151,19 @@ compare_derefs(nir_deref_var *a, nir_deref_var *b)
          nir_deref_array *a_arr = nir_deref_as_array(a_tail);
          nir_deref_array *b_arr = nir_deref_as_array(b_tail);
 
-         if (a_arr->deref_array_type == nir_deref_array_type_direct &&
-             b_arr->deref_array_type == nir_deref_array_type_direct) {
-            /* If they're both direct and have different offsets, they
-             * don't even alias much less anything else.
-             */
-            if (a_arr->base_offset != b_arr->base_offset)
-               return 0;
-         } else if (a_arr->deref_array_type == nir_deref_array_type_wildcard) {
+         if (a_arr->deref_array_type == nir_deref_array_type_wildcard) {
             if (b_arr->deref_array_type != nir_deref_array_type_wildcard)
                result &= ~derefs_b_contains_a_bit;
          } else if (b_arr->deref_array_type == nir_deref_array_type_wildcard) {
             if (a_arr->deref_array_type != nir_deref_array_type_wildcard)
                result &= ~derefs_a_contains_b_bit;
+         } else if (a_arr->deref_array_type == nir_deref_array_type_direct &&
+                    b_arr->deref_array_type == nir_deref_array_type_direct) {
+            /* If they're both direct and have different offsets, they
+             * don't even alias much less anything else.
+             */
+            if (a_arr->base_offset != b_arr->base_offset)
+               return 0;
          } else if (a_arr->deref_array_type == nir_deref_array_type_indirect &&
                     b_arr->deref_array_type == nir_deref_array_type_indirect) {
             assert(a_arr->indirect.is_ssa && b_arr->indirect.is_ssa);
-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list