Return unique_xmalloc_ptr for generate_c_for_variable_locations

This patch eliminates two cleanups in compile/ by changing
generate_c_for_variable_locations so that it returns a unique_ptr.

gdb/ChangeLog:
        * compile/compile-c-support.c (c_compute_program): Use
        unique_xmalloc_ptr to eliminate cleanup.
        * compile/compile-c-symbols.c (generate_c_for_variable_locations):
        Return a unique_xmalloc_ptr and eliminate cleanup.
        * compile/compile-internal.h (generate_c_for_variable_locations):
        Return unique_xmalloc_ptr and update description.
This commit is contained in:
Keith Seitz
2018-08-10 10:38:56 -07:00
parent d7f449c026
commit bd923e5108
4 changed files with 22 additions and 17 deletions

View File

@@ -351,17 +351,15 @@ c_compute_program (struct compile_instance *inst,
and the user's code may only refer to globals. */
if (inst->scope != COMPILE_I_RAW_SCOPE)
{
unsigned char *registers_used;
int i;
/* Generate the code to compute variable locations, but do it
before generating the function header, so we can define the
register struct before the function body. This requires a
temporary stream. */
registers_used = generate_c_for_variable_locations (context,
var_stream, gdbarch,
expr_block, expr_pc);
make_cleanup (xfree, registers_used);
gdb::unique_xmalloc_ptr<unsigned char> registers_used
= generate_c_for_variable_locations (context, var_stream, gdbarch,
expr_block, expr_pc);
buf.puts ("typedef unsigned int"
" __attribute__ ((__mode__(__pointer__)))"
@@ -382,7 +380,7 @@ c_compute_program (struct compile_instance *inst,
mode, mode);
}
generate_register_struct (&buf, gdbarch, registers_used);
generate_register_struct (&buf, gdbarch, registers_used.get ());
}
add_code_header (inst->scope, &buf);