diff options
author | Rob Clark <robclark@freedesktop.org> | 2016-03-22 15:02:42 -0400 |
---|---|---|
committer | Rob Clark <robclark@freedesktop.org> | 2016-03-24 08:30:04 -0400 |
commit | 0bea0e7141a7698118bfd465fdb4adf8e0b21bc8 (patch) | |
tree | fe0eec88ef8cdaeabbd089c05dc1efb4c3efce72 /src/compiler/nir/nir_search.c | |
parent | 4e060d80ff92b7fcf9b54cdd5ed00f549db3f573 (diff) |
nir: fix dangling ssadef->name ptrs
In many places, the convention is to pass an existing ssadef name ptr
when construction/initializing a new nir_ssa_def. But that goes badly
(as noticed by garbage in nir_print output) when the original string
gets freed.
Just use ralloc_strdup() instead, and add ralloc_free() in the two
places that would care (not that the strings wouldn't eventually get
freed anyways).
Also fixup the nir_search code which was directly setting ssadef->name
to use the parent instruction as memctx.
Signed-off-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Diffstat (limited to 'src/compiler/nir/nir_search.c')
-rw-r--r-- | src/compiler/nir/nir_search.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/compiler/nir/nir_search.c b/src/compiler/nir/nir_search.c index 110ab5e236..6e63063145 100644 --- a/src/compiler/nir/nir_search.c +++ b/src/compiler/nir/nir_search.c @@ -469,7 +469,7 @@ construct_value(const nir_search_value *value, switch (c->type) { case nir_type_float: - load->def.name = ralloc_asprintf(mem_ctx, "%f", c->data.d); + load->def.name = ralloc_asprintf(load, "%f", c->data.d); switch (bitsize->dest_size) { case 32: load->value.f32[0] = c->data.d; @@ -483,7 +483,7 @@ construct_value(const nir_search_value *value, break; case nir_type_int: - load->def.name = ralloc_asprintf(mem_ctx, "%ld", c->data.i); + load->def.name = ralloc_asprintf(load, "%ld", c->data.i); switch (bitsize->dest_size) { case 32: load->value.i32[0] = c->data.i; @@ -497,7 +497,7 @@ construct_value(const nir_search_value *value, break; case nir_type_uint: - load->def.name = ralloc_asprintf(mem_ctx, "%lu", c->data.u); + load->def.name = ralloc_asprintf(load, "%lu", c->data.u); switch (bitsize->dest_size) { case 32: load->value.u32[0] = c->data.u; |