From: Ian Romanick Date: Wed, 9 Jul 2014 02:04:52 +0000 (-0700) Subject: glsl: Don't make a name for the function return variable X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0b47252999e8a220a1478ffdcf952f12e843186a;p=mesa.git glsl: Don't make a name for the function return variable If the name is just going to get dropped, don't bother making it. If the name is made, release it sooner (rather than later). No change Valgrind massif results for a trimmed apitrace of dota2. Signed-off-by: Ian Romanick Reviewed-by: Matt Turner --- diff --git a/src/glsl/ast_function.cpp b/src/glsl/ast_function.cpp index 7130d616282..cbff9d8b452 100644 --- a/src/glsl/ast_function.cpp +++ b/src/glsl/ast_function.cpp @@ -408,14 +408,17 @@ generate_call(exec_list *instructions, ir_function_signature *sig, ir_dereference_variable *deref = NULL; if (!sig->return_type->is_void()) { /* Create a new temporary to hold the return value. */ + char *const name = ir_variable::temporaries_allocate_names + ? ralloc_asprintf(ctx, "%s_retval", sig->function_name()) + : NULL; + ir_variable *var; - var = new(ctx) ir_variable(sig->return_type, - ralloc_asprintf(ctx, "%s_retval", - sig->function_name()), - ir_var_temporary); + var = new(ctx) ir_variable(sig->return_type, name, ir_var_temporary); instructions->push_tail(var); + ralloc_free(name); + deref = new(ctx) ir_dereference_variable(var); } ir_call *call = new(ctx) ir_call(sig, deref, actual_parameters);