nir/lower_outputs_to_temporaries: Reparent the output name
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 10 Sep 2015 20:56:08 +0000 (13:56 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 11 Sep 2015 15:55:51 +0000 (08:55 -0700)
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.

Reviewed-by: Eduardo Lima Mitev <elima@igalia.com>
src/glsl/nir/nir_lower_outputs_to_temporaries.c

index b730cad00208222450df21d8a623e8a02019d80c..4ea5fd4f66b4f3a274f315dcccec9f0a5de1eb46 100644 (file)
@@ -91,6 +91,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@out-temp", output->name);
       temp->data.mode = nir_var_global;