<div dir="ltr">Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Aug 15, 2018 at 4:57 PM Caio Marcelo de Oliveira Filho <<a href="mailto:caio.oliveira@intel.com">caio.oliveira@intel.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Deref paths may share the same deref instructions in their chains,<br>
e.g.<br>
<br>
    ssa_100 = deref_var A<br>
    ssa_101 = deref_struct "array_field" of ssa_100<br>
    ssa_102 = deref_array "[1]" of ssa_101<br>
    ssa_103 = deref_struct "field_a" of ssa_102<br>
    ssa_104 = deref_struct "field_a" of ssa_103<br>
<br>
when comparing the two last deref instructions, their paths will share<br>
a common sequence ssa_100, ssa_101, ssa_102.  This patch skips to next<br>
iteration if the deref instructions are the same.  Path[0] (the var)<br>
is still handled specially, so in the case above, only ssa_101 and<br>
ssa_102 will be skipped.<br>
---<br>
 src/compiler/nir/nir_deref.c | 3 +++<br>
 1 file changed, 3 insertions(+)<br>
<br>
diff --git a/src/compiler/nir/nir_deref.c b/src/compiler/nir/nir_deref.c<br>
index d013b423a8b..c8851688f9d 100644<br>
--- a/src/compiler/nir/nir_deref.c<br>
+++ b/src/compiler/nir/nir_deref.c<br>
@@ -294,6 +294,9 @@ nir_compare_deref_paths(nir_deref_path *a_path,<br>
       nir_deref_instr *a_tail = *(a_p++);<br>
       nir_deref_instr *b_tail = *(b_p++);<br>
<br>
+      if (a_tail == b_tail)<br>
+         continue;<br>
+<br>
       switch (a_tail->deref_type) {<br>
       case nir_deref_type_array:<br>
       case nir_deref_type_array_wildcard: {<br>
-- <br>
2.18.0<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</blockquote></div>