[Mesa-dev] [PATCH] nir/lower_outputs_to_temporaries: Reparent the output name

Jason Ekstrand jason at jlekstrand.net
Thu Sep 10 13:58:27 PDT 2015


We copy the output, make the old output the temporary, and give the
temporary a new name.  The copy keeps the pointer to the old name.  This
works just fine up until the point where we lower things to SSA and delete
the old variable and, with it, the name.  Instead, we should re-parent to
the copy.
---
 src/glsl/nir/nir_lower_outputs_to_temporaries.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/glsl/nir/nir_lower_outputs_to_temporaries.c b/src/glsl/nir/nir_lower_outputs_to_temporaries.c
index fb8070c..9d3a913 100644
--- a/src/glsl/nir/nir_lower_outputs_to_temporaries.c
+++ b/src/glsl/nir/nir_lower_outputs_to_temporaries.c
@@ -97,6 +97,9 @@ nir_lower_outputs_to_temporaries(nir_shader *shader)
       /* The orignal is now the temporary */
       nir_variable *temp = var;
 
+      /* Reparent the name to the new variable */
+      ralloc_steal(output, output->name);
+
       /* Give the output a new name with @out-temp appended */
       temp->name = ralloc_asprintf(var, "%s at out-temp", output->name);
       temp->data.mode = nir_var_global;
-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list