nir/sweep: Reparent the shader name
authorJason Ekstrand <jason.ekstrand@intel.com>
Tue, 6 Oct 2015 00:16:02 +0000 (17:16 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 8 Oct 2015 15:20:31 +0000 (08:20 -0700)
Previously the name of the nir shader was being freed prematurely during
nir_sweep. Since 756613ed35d the name was later being used to generate
filenames for the optimiser debug output and these would end up with
garbage from the dangling pointer.

Co-authored-by: Neil Roberts <neil@linux.intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
src/glsl/nir/nir_sweep.c

index d354975..b6ce43b 100644 (file)
@@ -154,6 +154,8 @@ nir_sweep(nir_shader *nir)
    /* First, move ownership of all the memory to a temporary context; assume dead. */
    ralloc_adopt(rubbish, nir);
 
+   ralloc_steal(nir, (char *)nir->info.name);
+
    /* Variables and registers are not dead.  Steal them back. */
    steal_list(nir, nir_variable, &nir->uniforms);
    steal_list(nir, nir_variable, &nir->inputs);