public inbox for jit@gcc.gnu.org
 help / color / mirror / Atom feed
* Memory leaks (detected by Valgrind)
@ 2021-12-16 17:17 Marc Nieper-Wißkirchen
  2021-12-16 22:00 ` Marc Nieper-Wißkirchen
  0 siblings, 1 reply; 16+ messages in thread
From: Marc Nieper-Wißkirchen @ 2021-12-16 17:17 UTC (permalink / raw)
  To: jit

When I compile a gccjit context, Valgrind complains about a lot of memory
leaks.  Below I have attached a reproducing file extracted from my
project.  To reproduce the errors, I run:

$ gcc dummy.c reproducer.c -lgccjit -rdynamic
$ valgrind ./a.out

Thanks,

Marc

++++

reproducer.c:

/* This code was autogenerated by gcc_jit_context_dump_reproducer_to_file.

   libgccjit (Ubuntu 11.2.0-7ubuntu2) version 11.2.0 (x86_64-linux-gnu)
  compiled by GNU C version 11.2.0, GMP version 6.2.1, MPFR version 4.1.0,
MPC version 1.2.0, isl version isl-0.24-GMP

*/
#include <libgccjit.h>

#pragma GCC diagnostic ignored "-Wunused-variable"

static void
set_options (gcc_jit_context *ctxt_0x6db8b10,
             gcc_jit_context *ctxt_0x6dbd370);

static void
create_code (gcc_jit_context *ctxt_0x6db8b10,
             gcc_jit_context *ctxt_0x6dbd370);

int
main (int argc, const char **argv)
{
  gcc_jit_context *ctxt_0x6db8b10;
  gcc_jit_context *ctxt_0x6dbd370;
  gcc_jit_result *result;

  ctxt_0x6db8b10 = gcc_jit_context_acquire ();
  ctxt_0x6dbd370 = gcc_jit_context_new_child_context (ctxt_0x6db8b10);
  set_options (ctxt_0x6db8b10,
               ctxt_0x6dbd370);
  create_code (ctxt_0x6db8b10,
               ctxt_0x6dbd370);
  result = gcc_jit_context_compile (ctxt_0x6dbd370);
  gcc_jit_context_release (ctxt_0x6dbd370);
  gcc_jit_context_release (ctxt_0x6db8b10);
  gcc_jit_result_release (result);
  return 0;
}

static void
set_options (gcc_jit_context *ctxt_0x6db8b10,
             gcc_jit_context *ctxt_0x6dbd370)
{
  /* Set options for ctxt_0x6db8b10.  */
  /* String options.  */
  gcc_jit_context_set_str_option (ctxt_0x6db8b10,
                                  GCC_JIT_STR_OPTION_PROGNAME,
                                  NULL);
  /* Int options.  */
  gcc_jit_context_set_int_option (ctxt_0x6db8b10,
                                  GCC_JIT_INT_OPTION_OPTIMIZATION_LEVEL,
                                  0);
  /* Boolean options.  */
  gcc_jit_context_set_bool_option (ctxt_0x6db8b10,
                                  GCC_JIT_BOOL_OPTION_DEBUGINFO,
                                  0);
  gcc_jit_context_set_bool_option (ctxt_0x6db8b10,
                                  GCC_JIT_BOOL_OPTION_DUMP_INITIAL_TREE,
                                  0);
  gcc_jit_context_set_bool_option (ctxt_0x6db8b10,
                                  GCC_JIT_BOOL_OPTION_DUMP_INITIAL_GIMPLE,
                                  0);
  gcc_jit_context_set_bool_option (ctxt_0x6db8b10,
                                  GCC_JIT_BOOL_OPTION_DUMP_GENERATED_CODE,
                                  0);
  gcc_jit_context_set_bool_option (ctxt_0x6db8b10,
                                  GCC_JIT_BOOL_OPTION_DUMP_SUMMARY,
                                  0);
  gcc_jit_context_set_bool_option (ctxt_0x6db8b10,
                                  GCC_JIT_BOOL_OPTION_DUMP_EVERYTHING,
                                  0);
  gcc_jit_context_set_bool_option (ctxt_0x6db8b10,
                                  GCC_JIT_BOOL_OPTION_SELFCHECK_GC,
                                  0);
  gcc_jit_context_set_bool_option (ctxt_0x6db8b10,
                                  GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES,
                                  0);
  gcc_jit_context_set_bool_allow_unreachable_blocks (ctxt_0x6db8b10, 0);
  gcc_jit_context_set_bool_use_external_driver (ctxt_0x6db8b10, 0);

  /* Set options for ctxt_0x6dbd370.  */
  /* String options.  */
  gcc_jit_context_set_str_option (ctxt_0x6dbd370,
                                  GCC_JIT_STR_OPTION_PROGNAME,
                                  NULL);
  /* Int options.  */
  gcc_jit_context_set_int_option (ctxt_0x6dbd370,
                                  GCC_JIT_INT_OPTION_OPTIMIZATION_LEVEL,
                                  0);
  /* Boolean options.  */
  gcc_jit_context_set_bool_option (ctxt_0x6dbd370,
                                  GCC_JIT_BOOL_OPTION_DEBUGINFO,
                                  0);
  gcc_jit_context_set_bool_option (ctxt_0x6dbd370,
                                  GCC_JIT_BOOL_OPTION_DUMP_INITIAL_TREE,
                                  0);
  gcc_jit_context_set_bool_option (ctxt_0x6dbd370,
                                  GCC_JIT_BOOL_OPTION_DUMP_INITIAL_GIMPLE,
                                  0);
  gcc_jit_context_set_bool_option (ctxt_0x6dbd370,
                                  GCC_JIT_BOOL_OPTION_DUMP_GENERATED_CODE,
                                  0);
  gcc_jit_context_set_bool_option (ctxt_0x6dbd370,
                                  GCC_JIT_BOOL_OPTION_DUMP_SUMMARY,
                                  0);
  gcc_jit_context_set_bool_option (ctxt_0x6dbd370,
                                  GCC_JIT_BOOL_OPTION_DUMP_EVERYTHING,
                                  0);
  gcc_jit_context_set_bool_option (ctxt_0x6dbd370,
                                  GCC_JIT_BOOL_OPTION_SELFCHECK_GC,
                                  0);
  gcc_jit_context_set_bool_option (ctxt_0x6dbd370,
                                  GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES,
                                  0);
  gcc_jit_context_set_bool_allow_unreachable_blocks (ctxt_0x6dbd370, 0);
  gcc_jit_context_set_bool_use_external_driver (ctxt_0x6dbd370, 0);
}

static void
create_code (gcc_jit_context *ctxt_0x6db8b10,
             gcc_jit_context *ctxt_0x6dbd370)
{
  /* Replay of API calls for ctxt_0x6db8b10.  */
  gcc_jit_type *type_size_t = gcc_jit_context_get_type (ctxt_0x6db8b10,
GCC_JIT_TYPE_SIZE_T);
  gcc_jit_type *type_void = gcc_jit_context_get_type (ctxt_0x6db8b10,
GCC_JIT_TYPE_VOID);
  gcc_jit_type *type_unsigned_long_long = gcc_jit_context_get_type
(ctxt_0x6db8b10, GCC_JIT_TYPE_UNSIGNED_LONG_LONG);
  gcc_jit_type *type_void__ = gcc_jit_context_get_type (ctxt_0x6db8b10,
GCC_JIT_TYPE_VOID_PTR);
  gcc_jit_field *field_val =
    gcc_jit_context_new_field (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               type_unsigned_long_long, /* gcc_jit_type
*type, */
                               "val"); /* const char *name */
  gcc_jit_field *field_ptr =
    gcc_jit_context_new_field (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               type_void__, /* gcc_jit_type *type, */
                               "ptr"); /* const char *name */
  gcc_jit_field *fields_for_union_union_yyy_object[2] = {
    field_val,
    field_ptr,
  };
  gcc_jit_type *union_union_yyy_object =
    gcc_jit_context_new_union_type (ctxt_0x6db8b10,
                                    NULL, /* gcc_jit_location *loc */
                                    "yyy_object", /* const char *name */
                                    2, /* int num_fields */
                                    fields_for_union_union_yyy_object); /*
gcc_jit_field **fields */
  gcc_jit_field *field_val_0x6db9660 =
    gcc_jit_context_new_field (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               type_unsigned_long_long, /* gcc_jit_type
*type, */
                               "val"); /* const char *name */
  gcc_jit_field *field_ptr_0x6db97b0 =
    gcc_jit_context_new_field (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               type_void__, /* gcc_jit_type *type, */
                               "ptr"); /* const char *name */
  gcc_jit_field *fields_for_union_union_yyy_header[2] = {
    field_val_0x6db9660,
    field_ptr_0x6db97b0,
  };
  gcc_jit_type *union_union_yyy_header =
    gcc_jit_context_new_union_type (ctxt_0x6db8b10,
                                    NULL, /* gcc_jit_location *loc */
                                    "yyy_header", /* const char *name */
                                    2, /* int num_fields */
                                    fields_for_union_union_yyy_header); /*
gcc_jit_field **fields */
  gcc_jit_struct *struct_struct_yyy_label =
    gcc_jit_context_new_opaque_struct (ctxt_0x6db8b10,
                                       NULL, /* gcc_jit_location *loc */
                                       "yyy_label"); /* const char *name */
  gcc_jit_type *type_struct_yyy_label__ =
    gcc_jit_type_get_pointer (gcc_jit_struct_as_type
(struct_struct_yyy_label));
  gcc_jit_field *field_header =
    gcc_jit_context_new_field (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               union_union_yyy_header, /* gcc_jit_type
*type, */
                               "header"); /* const char *name */
  gcc_jit_field *field_ip =
    gcc_jit_context_new_field (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               type_struct_yyy_label__, /* gcc_jit_type
*type, */
                               "ip"); /* const char *name */
  gcc_jit_struct *struct_struct_yyy_thread =
    gcc_jit_context_new_opaque_struct (ctxt_0x6db8b10,
                                       NULL, /* gcc_jit_location *loc */
                                       "yyy_thread"); /* const char *name */
  gcc_jit_field *fields_fields[2] = {
    field_header,
    field_ip,
  };
  gcc_jit_struct_set_fields (struct_struct_yyy_thread, /* gcc_jit_struct
*struct_type */
                             NULL, /* gcc_jit_location *loc */
                             2, /* int num_fields */
                             fields_fields); /* gcc_jit_field **fields */
  gcc_jit_type *type_struct_yyy_thread__ =
    gcc_jit_type_get_pointer (gcc_jit_struct_as_type
(struct_struct_yyy_thread));
  gcc_jit_type *params_for_function_type_void__struct_yyy_thread___[1] = {
    type_struct_yyy_thread__,
  };
  gcc_jit_type *ptr_to_void______struct_yyy_thread___ =
    gcc_jit_context_new_function_ptr_type (ctxt_0x6db8b10, /*
gcc_jit_context *ctxt */
                                           NULL, /* gcc_jit_location *loc */
                                           type_void, /* gcc_jit_type
*return_type */
                                           1, /* int num_params */

 params_for_function_type_void__struct_yyy_thread___, /* gcc_jit_type
**param_types */
                                           0); /* int is_variadic */
  gcc_jit_struct *struct_struct_yyy_module =
    gcc_jit_context_new_opaque_struct (ctxt_0x6db8b10,
                                       NULL, /* gcc_jit_location *loc */
                                       "yyy_module"); /* const char *name */
  gcc_jit_field *fields_fields_0x6dba720[0] = {
  };
  gcc_jit_struct_set_fields (struct_struct_yyy_module, /* gcc_jit_struct
*struct_type */
                             NULL, /* gcc_jit_location *loc */
                             0, /* int num_fields */
                             fields_fields_0x6dba720); /* gcc_jit_field
**fields */
  gcc_jit_type *type_struct_yyy_module__ =
    gcc_jit_type_get_pointer (gcc_jit_struct_as_type
(struct_struct_yyy_module));
  gcc_jit_field *field_proc_count =
    gcc_jit_context_new_field (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               type_size_t, /* gcc_jit_type *type, */
                               "proc_count"); /* const char *name */
  gcc_jit_field *field_fv_count =
    gcc_jit_context_new_field (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               type_size_t, /* gcc_jit_type *type, */
                               "fv_count"); /* const char *name */
  gcc_jit_struct *struct_struct_yyy_closure_descriptor =
    gcc_jit_context_new_opaque_struct (ctxt_0x6db8b10,
                                       NULL, /* gcc_jit_location *loc */
                                       "yyy_closure_descriptor"); /* const
char *name */
  gcc_jit_field *fields_fields_0x6dbae00[2] = {
    field_proc_count,
    field_fv_count,
  };
  gcc_jit_struct_set_fields (struct_struct_yyy_closure_descriptor, /*
gcc_jit_struct *struct_type */
                             NULL, /* gcc_jit_location *loc */
                             2, /* int num_fields */
                             fields_fields_0x6dbae00); /* gcc_jit_field
**fields */
  gcc_jit_type *type_struct_yyy_closure_descriptor__ =
    gcc_jit_type_get_pointer (gcc_jit_struct_as_type
(struct_struct_yyy_closure_descriptor));
  gcc_jit_field *field_cd =
    gcc_jit_context_new_field (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               type_struct_yyy_closure_descriptor__, /*
gcc_jit_type *type, */
                               "cd"); /* const char *name */
  gcc_jit_field *field_clo_off =
    gcc_jit_context_new_field (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               type_size_t, /* gcc_jit_type *type, */
                               "clo_off"); /* const char *name */
  gcc_jit_struct *struct_struct_yyy_procedure_descriptor =
    gcc_jit_context_new_opaque_struct (ctxt_0x6db8b10,
                                       NULL, /* gcc_jit_location *loc */
                                       "yyy_procedure_descriptor"); /*
const char *name */
  gcc_jit_field *fields_fields_0x6dbb350[2] = {
    field_cd,
    field_clo_off,
  };
  gcc_jit_struct_set_fields (struct_struct_yyy_procedure_descriptor, /*
gcc_jit_struct *struct_type */
                             NULL, /* gcc_jit_location *loc */
                             2, /* int num_fields */
                             fields_fields_0x6dbb350); /* gcc_jit_field
**fields */
  gcc_jit_type *type_struct_yyy_procedure_descriptor__ =
    gcc_jit_type_get_pointer (gcc_jit_struct_as_type
(struct_struct_yyy_procedure_descriptor));
  gcc_jit_field *field_header_0x6dbb570 =
    gcc_jit_context_new_field (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               union_union_yyy_header, /* gcc_jit_type
*type, */
                               "header"); /* const char *name */
  gcc_jit_field *field_pd =
    gcc_jit_context_new_field (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               type_struct_yyy_procedure_descriptor__, /*
gcc_jit_type *type, */
                               "pd"); /* const char *name */
  gcc_jit_struct *struct_struct_x =
    gcc_jit_context_new_opaque_struct (ctxt_0x6db8b10,
                                       NULL, /* gcc_jit_location *loc */
                                       "x"); /* const char *name */
  gcc_jit_field *fields_fields_0x6dbbb60[2] = {
    field_header_0x6dbb570,
    field_pd,
  };
  gcc_jit_struct_set_fields (struct_struct_x, /* gcc_jit_struct
*struct_type */
                             NULL, /* gcc_jit_location *loc */
                             2, /* int num_fields */
                             fields_fields_0x6dbbb60); /* gcc_jit_field
**fields */
  gcc_jit_field *field_x =
    gcc_jit_context_new_field (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               gcc_jit_struct_as_type (struct_struct_x), /*
gcc_jit_type *type, */
                               "x"); /* const char *name */
  gcc_jit_field *field_mod =
    gcc_jit_context_new_field (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               type_struct_yyy_module__, /* gcc_jit_type
*type, */
                               "mod"); /* const char *name */
  gcc_jit_field *field_prog =
    gcc_jit_context_new_field (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               ptr_to_void______struct_yyy_thread___, /*
gcc_jit_type *type, */
                               "prog"); /* const char *name */
  gcc_jit_struct *struct_struct_y =
    gcc_jit_context_new_opaque_struct (ctxt_0x6db8b10,
                                       NULL, /* gcc_jit_location *loc */
                                       "y"); /* const char *name */
  gcc_jit_field *fields_fields_0x6dbc250[2] = {
    field_mod,
    field_prog,
  };
  gcc_jit_struct_set_fields (struct_struct_y, /* gcc_jit_struct
*struct_type */
                             NULL, /* gcc_jit_location *loc */
                             2, /* int num_fields */
                             fields_fields_0x6dbc250); /* gcc_jit_field
**fields */
  gcc_jit_field *field_y =
    gcc_jit_context_new_field (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               gcc_jit_struct_as_type (struct_struct_y), /*
gcc_jit_type *type, */
                               "y"); /* const char *name */
  gcc_jit_field *fields_for_union_union_a[2] = {
    field_x,
    field_y,
  };
  gcc_jit_type *union_union_a =
    gcc_jit_context_new_union_type (ctxt_0x6db8b10,
                                    NULL, /* gcc_jit_location *loc */
                                    "a", /* const char *name */
                                    2, /* int num_fields */
                                    fields_for_union_union_a); /*
gcc_jit_field **fields */
  gcc_jit_field *field_a =
    gcc_jit_context_new_field (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               union_union_a, /* gcc_jit_type *type, */
                               "a"); /* const char *name */
  gcc_jit_field *fields_fields_0x6dbc800[1] = {
    field_a,
  };
  gcc_jit_struct_set_fields (struct_struct_yyy_label, /* gcc_jit_struct
*struct_type */
                             NULL, /* gcc_jit_location *loc */
                             1, /* int num_fields */
                             fields_fields_0x6dbc800); /* gcc_jit_field
**fields */
  gcc_jit_param *param_thd =
    gcc_jit_context_new_param (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               type_struct_yyy_thread__, /*gcc_jit_type
*type */
                               "thd"); /* const char *name */
  gcc_jit_param *param_labels =
    gcc_jit_context_new_param (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               type_struct_yyy_label__, /*gcc_jit_type
*type */
                               "labels"); /* const char *name */
  gcc_jit_param *param_glob_count =
    gcc_jit_context_new_param (ctxt_0x6db8b10,
                               NULL, /* gcc_jit_location *loc */
                               type_size_t, /*gcc_jit_type *type */
                               "glob_count"); /* const char *name */
  gcc_jit_param *params_for_func_yyy_make_module[3] = {
    param_thd,
    param_labels,
    param_glob_count,
  };
  gcc_jit_function *func_yyy_make_module =
    gcc_jit_context_new_function (ctxt_0x6db8b10, /* gcc_jit_context *ctxt
*/
                                  NULL, /* gcc_jit_location *loc */
                                  GCC_JIT_FUNCTION_IMPORTED, /* enum
gcc_jit_function_kind kind */
                                  type_struct_yyy_module__, /* gcc_jit_type
*return_type */
                                  "yyy_make_module", /* const char *name */
                                  3, /* int num_params */
                                  params_for_func_yyy_make_module, /*
gcc_jit_param **params */
                                  0); /* int is_variadic */
  gcc_jit_type *type_int = gcc_jit_context_get_type (ctxt_0x6db8b10,
GCC_JIT_TYPE_INT);
  gcc_jit_function *func___builtin_trap =
    gcc_jit_context_get_builtin_function (ctxt_0x6db8b10,
                                          "__builtin_trap");


  /* Replay of API calls for ctxt_0x6dbd370.  */
  gcc_jit_type *array_type_struct_yyy_label_1_ =
    gcc_jit_context_new_array_type (ctxt_0x6dbd370,
                                    NULL, /* gcc_jit_location *loc */
                                    gcc_jit_struct_as_type
(struct_struct_yyy_label), /* gcc_jit_type *element_type */
                                    1); /* int num_elements */
  gcc_jit_lvalue *block_labels =
    gcc_jit_context_new_global (ctxt_0x6dbd370, /* gcc_jit_context *ctxt */
                                NULL, /* gcc_jit_location *loc */
                                GCC_JIT_GLOBAL_INTERNAL, /* enum
gcc_jit_global_kind kind */
                                array_type_struct_yyy_label_1_, /*
gcc_jit_type *type */
                                "labels"); /* const char *name */
  gcc_jit_rvalue *rvalue__size_t_0 =
    gcc_jit_context_new_rvalue_from_int (ctxt_0x6dbd370, /* gcc_jit_context
*ctxt */
                                         type_size_t, /* gcc_jit_type
*numeric_type */
                                         0); /* int value */
  gcc_jit_lvalue *lvalue_labels__size_t_0_ =
    gcc_jit_context_new_array_access (ctxt_0x6dbd370, /* gcc_jit_context
*ctxt */
                                      NULL, /*gcc_jit_location *loc */
                                      gcc_jit_lvalue_as_rvalue
(block_labels), /* gcc_jit_rvalue *ptr */
                                      rvalue__size_t_0); /* gcc_jit_rvalue
*index */
  gcc_jit_rvalue *address_of__labels__size_t_0_ =
    gcc_jit_lvalue_get_address (lvalue_labels__size_t_0_, /* gcc_jit_lvalue
*lvalue */
                                NULL); /* gcc_jit_location *loc */
  gcc_jit_param *param_thd_0x6dbec70 =
    gcc_jit_context_new_param (ctxt_0x6dbd370,
                               NULL, /* gcc_jit_location *loc */
                               type_struct_yyy_thread__, /*gcc_jit_type
*type */
                               "thd"); /* const char *name */
  gcc_jit_param *params_for_func_yyy_get_entry[1] = {
    param_thd_0x6dbec70,
  };
  gcc_jit_function *func_yyy_get_entry =
    gcc_jit_context_new_function (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
*/
                                  NULL, /* gcc_jit_location *loc */
                                  GCC_JIT_FUNCTION_EXPORTED, /* enum
gcc_jit_function_kind kind */
                                  type_struct_yyy_label__, /* gcc_jit_type
*return_type */
                                  "yyy_get_entry", /* const char *name */
                                  1, /* int num_params */
                                  params_for_func_yyy_get_entry, /*
gcc_jit_param **params */
                                  0); /* int is_variadic */
  gcc_jit_param *param_thd_0x6dbf100 =
    gcc_jit_context_new_param (ctxt_0x6dbd370,
                               NULL, /* gcc_jit_location *loc */
                               type_struct_yyy_thread__, /*gcc_jit_type
*type */
                               "thd"); /* const char *name */
  gcc_jit_param *params_for_func_prog[1] = {
    param_thd_0x6dbf100,
  };
  gcc_jit_function *func_prog =
    gcc_jit_context_new_function (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
*/
                                  NULL, /* gcc_jit_location *loc */
                                  GCC_JIT_FUNCTION_INTERNAL, /* enum
gcc_jit_function_kind kind */
                                  type_void, /* gcc_jit_type *return_type */
                                  "prog", /* const char *name */
                                  1, /* int num_params */
                                  params_for_func_prog, /* gcc_jit_param
**params */
                                  0); /* int is_variadic */
  gcc_jit_block *block_initial =
    gcc_jit_function_new_block (func_prog, "initial");
  gcc_jit_lvalue *local_mod =
    gcc_jit_function_new_local (func_yyy_get_entry, /* gcc_jit_function
*func */
                                NULL, /* gcc_jit_location *loc */
                                type_struct_yyy_module__, /* gcc_jit_type
*type */
                                "mod"); /* const char *name */
  gcc_jit_block *block_initial_0x6dbf900 =
    gcc_jit_function_new_block (func_yyy_get_entry, "initial");
  gcc_jit_rvalue *rvalue__size_t_0_0x6dbfa00 =
    gcc_jit_context_new_rvalue_from_long (ctxt_0x6dbd370, /*
gcc_jit_context *ctxt */
                                          type_size_t, /* gcc_jit_type
*numeric_type */
                                          0L); /* long value */
  gcc_jit_rvalue
*args_for__call_yyy_make_module__thd____labels__size_t_0_____size_t_0_[3] =
{
    gcc_jit_param_as_rvalue (param_thd_0x6dbec70),
    address_of__labels__size_t_0_,
    rvalue__size_t_0_0x6dbfa00,
  };
  gcc_jit_rvalue
*call_yyy_make_module__thd____labels__size_t_0_____size_t_0_ =
    gcc_jit_context_new_call (ctxt_0x6dbd370, /* gcc_jit_context *ctxt */
                              NULL, /* gcc_jit_location *loc */
                              func_yyy_make_module, /* gcc_jit_function
*func */
                              3, /* int numargs  */

args_for__call_yyy_make_module__thd____labels__size_t_0_____size_t_0_); /*
gcc_jit_rvalue **args*/
  gcc_jit_block_add_assignment (block_initial_0x6dbf900, /*gcc_jit_block
*block */
                                NULL, /* gcc_jit_location *loc */
                                local_mod, /* gcc_jit_lvalue *lvalue */

call_yyy_make_module__thd____labels__size_t_0_____size_t_0_); /*
gcc_jit_rvalue *rvalue */
  gcc_jit_rvalue *rvalue__size_t_0_0x6dbfc90 =
    gcc_jit_context_new_rvalue_from_long (ctxt_0x6dbd370, /*
gcc_jit_context *ctxt */
                                          type_size_t, /* gcc_jit_type
*numeric_type */
                                          0L); /* long value */
  gcc_jit_lvalue *lvalue_labels__size_t_0__0x6dbfd20 =
    gcc_jit_context_new_array_access (ctxt_0x6dbd370, /* gcc_jit_context
*ctxt */
                                      NULL, /*gcc_jit_location *loc */
                                      gcc_jit_lvalue_as_rvalue
(block_labels), /* gcc_jit_rvalue *ptr */
                                      rvalue__size_t_0_0x6dbfc90); /*
gcc_jit_rvalue *index */
  gcc_jit_block *block__UNNAMED_BLOCK_0x6dbff20_ =
    gcc_jit_function_new_block (func_prog, NULL);
  gcc_jit_lvalue *lvalue_labels__size_t_0__a =
    gcc_jit_lvalue_access_field (lvalue_labels__size_t_0__0x6dbfd20,
/*gcc_jit_lvalue *struct_or_union */
                                 NULL, /*gcc_jit_location *loc */
                                 field_a);
  gcc_jit_lvalue *lvalue_labels__size_t_0__a_y =
    gcc_jit_lvalue_access_field (lvalue_labels__size_t_0__a,
/*gcc_jit_lvalue *struct_or_union */
                                 NULL, /*gcc_jit_location *loc */
                                 field_y);
  gcc_jit_lvalue *lvalue_labels__size_t_0__a_y_mod =
    gcc_jit_lvalue_access_field (lvalue_labels__size_t_0__a_y,
/*gcc_jit_lvalue *struct_or_union */
                                 NULL, /*gcc_jit_location *loc */
                                 field_mod);
  gcc_jit_block_add_assignment (block_initial_0x6dbf900, /*gcc_jit_block
*block */
                                NULL, /* gcc_jit_location *loc */
                                lvalue_labels__size_t_0__a_y_mod, /*
gcc_jit_lvalue *lvalue */
                                gcc_jit_lvalue_as_rvalue (local_mod)); /*
gcc_jit_rvalue *rvalue */
  gcc_jit_type
*params_for_function_type_void__struct_yyy_thread____0x6dc0230[1] = {
    type_struct_yyy_thread__,
  };
  gcc_jit_type *ptr_to_void______struct_yyy_thread____0x6dc0320 =
    gcc_jit_context_new_function_ptr_type (ctxt_0x6dbd370, /*
gcc_jit_context *ctxt */
                                           NULL, /* gcc_jit_location *loc */
                                           type_void, /* gcc_jit_type
*return_type */
                                           1, /* int num_params */

 params_for_function_type_void__struct_yyy_thread____0x6dc0230, /*
gcc_jit_type **param_types */
                                           0); /* int is_variadic */
  gcc_jit_rvalue *address_of_prog =
    gcc_jit_function_get_address (func_prog, /* gcc_jit_function *fn */
                                  NULL); /* gcc_jit_location *loc */
  gcc_jit_lvalue *lvalue_labels__size_t_0__a_0x6dc0420 =
    gcc_jit_lvalue_access_field (lvalue_labels__size_t_0__0x6dbfd20,
/*gcc_jit_lvalue *struct_or_union */
                                 NULL, /*gcc_jit_location *loc */
                                 field_a);
  gcc_jit_lvalue *lvalue_labels__size_t_0__a_y_0x6dc04b0 =
    gcc_jit_lvalue_access_field (lvalue_labels__size_t_0__a_0x6dc0420,
/*gcc_jit_lvalue *struct_or_union */
                                 NULL, /*gcc_jit_location *loc */
                                 field_y);
  gcc_jit_lvalue *lvalue_labels__size_t_0__a_y_prog =
    gcc_jit_lvalue_access_field (lvalue_labels__size_t_0__a_y_0x6dc04b0,
/*gcc_jit_lvalue *struct_or_union */
                                 NULL, /*gcc_jit_location *loc */
                                 field_prog);
  gcc_jit_block_add_assignment (block_initial_0x6dbf900, /*gcc_jit_block
*block */
                                NULL, /* gcc_jit_location *loc */
                                lvalue_labels__size_t_0__a_y_prog, /*
gcc_jit_lvalue *lvalue */
                                address_of_prog); /* gcc_jit_rvalue *rvalue
*/
  gcc_jit_rvalue *rvalue__size_t_0_0x6dc0850 =
    gcc_jit_context_new_rvalue_from_long (ctxt_0x6dbd370, /*
gcc_jit_context *ctxt */
                                          type_size_t, /* gcc_jit_type
*numeric_type */
                                          0L); /* long value */
  gcc_jit_lvalue *lvalue_labels__size_t_0__0x6dc08e0 =
    gcc_jit_context_new_array_access (ctxt_0x6dbd370, /* gcc_jit_context
*ctxt */
                                      NULL, /*gcc_jit_location *loc */
                                      gcc_jit_lvalue_as_rvalue
(block_labels), /* gcc_jit_rvalue *ptr */
                                      rvalue__size_t_0_0x6dc0850); /*
gcc_jit_rvalue *index */
  gcc_jit_rvalue *address_of__labels__size_t_0__0x6dc0970 =
    gcc_jit_lvalue_get_address (lvalue_labels__size_t_0__0x6dc08e0, /*
gcc_jit_lvalue *lvalue */
                                NULL); /* gcc_jit_location *loc */
  gcc_jit_block_end_with_return (block_initial_0x6dbf900, /*gcc_jit_block
*block */
                                 NULL, /* gcc_jit_location *loc */
                                 address_of__labels__size_t_0__0x6dc0970);
/* gcc_jit_rvalue *rvalue */
  gcc_jit_block *block_default =
    gcc_jit_function_new_block (func_prog, "default");
  gcc_jit_rvalue *rvalue__size_t_0_0x6dc0c30 =
    gcc_jit_context_new_rvalue_from_long (ctxt_0x6dbd370, /*
gcc_jit_context *ctxt */
                                          type_size_t, /* gcc_jit_type
*numeric_type */
                                          0L); /* long value */
  gcc_jit_case
*case_case__size_t_0______size_t_0__goto__UNNAMED_BLOCK_0x6dbff20__ =
    gcc_jit_context_new_case (ctxt_0x6dbd370, /*gcc_jit_context *ctxt */
                              rvalue__size_t_0_0x6dc0c30, /* gcc_jit_rvalue
*min_value */
                              rvalue__size_t_0_0x6dc0c30, /* gcc_jit_rvalue
*max_value */
                              block__UNNAMED_BLOCK_0x6dbff20_); /*
gcc_jit_block *dest_block */
  gcc_jit_lvalue *lvalue_thd__ip=
    gcc_jit_rvalue_dereference_field (gcc_jit_param_as_rvalue
(param_thd_0x6dbf100), /* gcc_jit_rvalue *ptr */
                                      NULL, /* gcc_jit_location *loc */
                                      field_ip); /* gcc_jit_field *field */
  gcc_jit_rvalue *rvalue_thd__ip____labels__size_t_0_ =
    gcc_jit_context_new_binary_op (ctxt_0x6dbd370,
                                   NULL, /* gcc_jit_location *loc */
                                   GCC_JIT_BINARY_OP_MINUS, /* enum
gcc_jit_binary_op op */
                                   type_size_t, /* gcc_jit_type
*result_type */
                                   gcc_jit_lvalue_as_rvalue
(lvalue_thd__ip), /* gcc_jit_rvalue *a */
                                   address_of__labels__size_t_0_); /*
gcc_jit_rvalue *b */
  gcc_jit_case *cases_for_switch_0x6dc0ee0[1] = {
    case_case__size_t_0______size_t_0__goto__UNNAMED_BLOCK_0x6dbff20__,
  };
  gcc_jit_block_end_with_switch (block_initial, /*gcc_jit_block *block */
                                 NULL, /* gcc_jit_location *loc */
                                 rvalue_thd__ip____labels__size_t_0_, /*
gcc_jit_rvalue *expr */
                                 block_default, /* gcc_jit_block
*default_block */
                                 1, /* int num_cases */
                                 cases_for_switch_0x6dc0ee0); /*
gcc_jit_case **cases */
  gcc_jit_block_end_with_void_return (block_default, /*gcc_jit_block *block
*/
                                      NULL); /* gcc_jit_location *loc */
  gcc_jit_param *param_code =
    gcc_jit_context_new_param (ctxt_0x6dbd370,
                               NULL, /* gcc_jit_location *loc */
                               type_int, /*gcc_jit_type *type */
                               "code"); /* const char *name */
  gcc_jit_param *params_for_func_exit[1] = {
    param_code,
  };
  gcc_jit_function *func_exit =
    gcc_jit_context_new_function (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
*/
                                  NULL, /* gcc_jit_location *loc */
                                  GCC_JIT_FUNCTION_IMPORTED, /* enum
gcc_jit_function_kind kind */
                                  type_void, /* gcc_jit_type *return_type */
                                  "exit", /* const char *name */
                                  1, /* int num_params */
                                  params_for_func_exit, /* gcc_jit_param
**params */
                                  0); /* int is_variadic */
  gcc_jit_rvalue *rvalue__int_0 =
    gcc_jit_context_new_rvalue_from_int (ctxt_0x6dbd370, /* gcc_jit_context
*ctxt */
                                         type_int, /* gcc_jit_type
*numeric_type */
                                         0); /* int value */
  gcc_jit_rvalue *args_for__call_exit___int_0_[1] = {
    rvalue__int_0,
  };
  gcc_jit_rvalue *call_exit___int_0_ =
    gcc_jit_context_new_call (ctxt_0x6dbd370, /* gcc_jit_context *ctxt */
                              NULL, /* gcc_jit_location *loc */
                              func_exit, /* gcc_jit_function *func */
                              1, /* int numargs  */
                              args_for__call_exit___int_0_); /*
gcc_jit_rvalue **args*/
  gcc_jit_block_add_eval (block__UNNAMED_BLOCK_0x6dbff20_, /*gcc_jit_block
*block */
                          NULL, /* gcc_jit_location *loc */
                          call_exit___int_0_); /* gcc_jit_rvalue *rvalue */
  gcc_jit_block_end_with_void_return (block__UNNAMED_BLOCK_0x6dbff20_,
/*gcc_jit_block *block */
                                      NULL); /* gcc_jit_location *loc */
  gcc_jit_location *loc__tmp_dump_c_0_0 =
    gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
*/
    "/tmp/dump.c", /* const char *filename */
    0, /* int line */
    0);/* int column */
  gcc_jit_location *loc__tmp_dump_c_3_0 =
    gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
*/
    "/tmp/dump.c", /* const char *filename */
    3, /* int line */
    0);/* int column */
  gcc_jit_location *loc__tmp_dump_c_5_0 =
    gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
*/
    "/tmp/dump.c", /* const char *filename */
    5, /* int line */
    0);/* int column */
  gcc_jit_location *loc__tmp_dump_c_9_0 =
    gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
*/
    "/tmp/dump.c", /* const char *filename */
    9, /* int line */
    0);/* int column */
  gcc_jit_location *loc__tmp_dump_c_10_0 =
    gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
*/
    "/tmp/dump.c", /* const char *filename */
    10, /* int line */
    0);/* int column */
  gcc_jit_location *loc__tmp_dump_c_11_0 =
    gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
*/
    "/tmp/dump.c", /* const char *filename */
    11, /* int line */
    0);/* int column */
  gcc_jit_location *loc__tmp_dump_c_12_0 =
    gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
*/
    "/tmp/dump.c", /* const char *filename */
    12, /* int line */
    0);/* int column */
  gcc_jit_location *loc__tmp_dump_c_15_0 =
    gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
*/
    "/tmp/dump.c", /* const char *filename */
    15, /* int line */
    0);/* int column */
  gcc_jit_location *loc__tmp_dump_c_19_0 =
    gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
*/
    "/tmp/dump.c", /* const char *filename */
    19, /* int line */
    0);/* int column */
  gcc_jit_location *loc__tmp_dump_c_22_0 =
    gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
*/
    "/tmp/dump.c", /* const char *filename */
    22, /* int line */
    0);/* int column */
  gcc_jit_location *loc__tmp_dump_c_23_0 =
    gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
*/
    "/tmp/dump.c", /* const char *filename */
    23, /* int line */
    0);/* int column */
  gcc_jit_location *loc__tmp_dump_c_26_0 =
    gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
*/
    "/tmp/dump.c", /* const char *filename */
    26, /* int line */
    0);/* int column */
  gcc_jit_location *loc__tmp_dump_c_29_0 =
    gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
*/
    "/tmp/dump.c", /* const char *filename */
    29, /* int line */
    0);/* int column */
}

++++

dummy.c:

#include <stddef.h>

void *yyy_make_module (void *thd, void *labels, size_t glob_count)
{
  return NULL;
}

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Memory leaks (detected by Valgrind)
  2021-12-16 17:17 Memory leaks (detected by Valgrind) Marc Nieper-Wißkirchen
@ 2021-12-16 22:00 ` Marc Nieper-Wißkirchen
  2021-12-16 22:26   ` Mark Wielaard
  0 siblings, 1 reply; 16+ messages in thread
From: Marc Nieper-Wißkirchen @ 2021-12-16 22:00 UTC (permalink / raw)
  To: Marc Nieper-Wißkirchen; +Cc: jit

Here is the Valgrind output for a debug GCC build:

$ LIBRARY_PATH=~/gcc/build/gcc LD_LIBRARY_PATH=~/gcc/install/lib valgrind
--leak-check=full --track-origins=yes ./a.out > valgrind.log 2>&1
$ cat valgrind.log
==22279== Memcheck, a memory error detector
==22279== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==22279== Using Valgrind-3.17.0 and LibVEX; rerun with -h for copyright info
==22279== Command: ./a.out
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x4E85EB4: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4E85EB4: mark_pseudo_regno_live(int) (ira-lives.c:326)
==22279==    by 0x4E87BB8: process_bb_node_lives(ira_loop_tree_node*)
(ira-lives.c:1434)
==22279==    by 0x4E6B0D6: ira_traverse_loop_tree(bool,
ira_loop_tree_node*, void (*)(ira_loop_tree_node*), void
(*)(ira_loop_tree_node*)) (ira-build.c:1806)
==22279==    by 0x4E885D3: ira_create_allocno_live_ranges()
(ira-lives.c:1734)
==22279==    by 0x4E6C8BC: ira_build() (ira-build.c:3433)
==22279==    by 0x4E63C17: ira (ira.c:5752)
==22279==    by 0x4E63C17: (anonymous
namespace)::pass_ira::execute(function*) (ira.c:6075)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4E88562: ira_create_allocno_live_ranges()
(ira-lives.c:1727)
==22279==    by 0x4E6C8BC: ira_build() (ira-build.c:3433)
==22279==    by 0x4E63C17: ira (ira.c:5752)
==22279==    by 0x4E63C17: (anonymous
namespace)::pass_ira::execute(function*) (ira.c:6075)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x4E85DC0: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4E85DC0: sparseset_set_bit (sparseset.h:165)
==22279==    by 0x4E85DC0: make_object_live(ira_object*) (ira-lives.c:126)
==22279==    by 0x4E85ED0: mark_pseudo_regno_live(int) (ira-lives.c:330)
==22279==    by 0x4E87BB8: process_bb_node_lives(ira_loop_tree_node*)
(ira-lives.c:1434)
==22279==    by 0x4E6B0D6: ira_traverse_loop_tree(bool,
ira_loop_tree_node*, void (*)(ira_loop_tree_node*), void
(*)(ira_loop_tree_node*)) (ira-build.c:1806)
==22279==    by 0x4E885D3: ira_create_allocno_live_ranges()
(ira-lives.c:1734)
==22279==    by 0x4E6C8BC: ira_build() (ira-build.c:3433)
==22279==    by 0x4E63C17: ira (ira.c:5752)
==22279==    by 0x4E63C17: (anonymous
namespace)::pass_ira::execute(function*) (ira.c:6075)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4E88562: ira_create_allocno_live_ranges()
(ira-lives.c:1727)
==22279==    by 0x4E6C8BC: ira_build() (ira-build.c:3433)
==22279==    by 0x4E63C17: ira (ira.c:5752)
==22279==    by 0x4E63C17: (anonymous
namespace)::pass_ira::execute(function*) (ira.c:6075)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==
==22279== Use of uninitialised value of size 8
==22279==    at 0x4E85EB9: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4E85EB9: mark_pseudo_regno_live(int) (ira-lives.c:326)
==22279==    by 0x4E87BB8: process_bb_node_lives(ira_loop_tree_node*)
(ira-lives.c:1434)
==22279==    by 0x4E6B0D6: ira_traverse_loop_tree(bool,
ira_loop_tree_node*, void (*)(ira_loop_tree_node*), void
(*)(ira_loop_tree_node*)) (ira-build.c:1806)
==22279==    by 0x4E885D3: ira_create_allocno_live_ranges()
(ira-lives.c:1734)
==22279==    by 0x4E6C8BC: ira_build() (ira-build.c:3433)
==22279==    by 0x4E63C17: ira (ira.c:5752)
==22279==    by 0x4E63C17: (anonymous
namespace)::pass_ira::execute(function*) (ira.c:6075)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4E88562: ira_create_allocno_live_ranges()
(ira-lives.c:1727)
==22279==    by 0x4E6C8BC: ira_build() (ira-build.c:3433)
==22279==    by 0x4E63C17: ira (ira.c:5752)
==22279==    by 0x4E63C17: (anonymous
namespace)::pass_ira::execute(function*) (ira.c:6075)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==
==22279== Use of uninitialised value of size 8
==22279==    at 0x4E85DC2: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4E85DC2: sparseset_set_bit (sparseset.h:165)
==22279==    by 0x4E85DC2: make_object_live(ira_object*) (ira-lives.c:126)
==22279==    by 0x4E85ED0: mark_pseudo_regno_live(int) (ira-lives.c:330)
==22279==    by 0x4E87BB8: process_bb_node_lives(ira_loop_tree_node*)
(ira-lives.c:1434)
==22279==    by 0x4E6B0D6: ira_traverse_loop_tree(bool,
ira_loop_tree_node*, void (*)(ira_loop_tree_node*), void
(*)(ira_loop_tree_node*)) (ira-build.c:1806)
==22279==    by 0x4E885D3: ira_create_allocno_live_ranges()
(ira-lives.c:1734)
==22279==    by 0x4E6C8BC: ira_build() (ira-build.c:3433)
==22279==    by 0x4E63C17: ira (ira.c:5752)
==22279==    by 0x4E63C17: (anonymous
namespace)::pass_ira::execute(function*) (ira.c:6075)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4E88562: ira_create_allocno_live_ranges()
(ira-lives.c:1727)
==22279==    by 0x4E6C8BC: ira_build() (ira-build.c:3433)
==22279==    by 0x4E63C17: ira (ira.c:5752)
==22279==    by 0x4E63C17: (anonymous
namespace)::pass_ira::execute(function*) (ira.c:6075)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x4EBE69D: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EBE69D: check_pseudos_live_through_calls(int,
function_abi const&) (lra-lives.c:591)
==22279==    by 0x4EBFB11: process_bb_lives (lra-lives.c:948)
==22279==    by 0x4EBFB11: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==    by 0x4C19327: symbol_table::finalize_compilation_unit()
(cgraphunit.c:2529)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF270: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1394)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x4EBF81F: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EBF81F: process_bb_lives (lra-lives.c:790)
==22279==    by 0x4EBF81F: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==    by 0x4C19327: symbol_table::finalize_compilation_unit()
(cgraphunit.c:2529)
==22279==    by 0x503A9A3: compile_file() (toplev.c:479)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF262: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1393)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x4EC0979: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EC0979: process_bb_lives (lra-lives.c:808)
==22279==    by 0x4EC0979: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==    by 0x4C19327: symbol_table::finalize_compilation_unit()
(cgraphunit.c:2529)
==22279==    by 0x503A9A3: compile_file() (toplev.c:479)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF262: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1393)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x4EBE69D: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EBE69D: check_pseudos_live_through_calls(int,
function_abi const&) (lra-lives.c:591)
==22279==    by 0x4EBF8BB: process_bb_lives (lra-lives.c:864)
==22279==    by 0x4EBF8BB: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==    by 0x4C19327: symbol_table::finalize_compilation_unit()
(cgraphunit.c:2529)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF270: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1394)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x4EBE224: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EBE224: sparseset_set_bit (sparseset.h:165)
==22279==    by 0x4EBE224: make_hard_regno_dead(int) (lra-lives.c:310)
==22279==    by 0x4EBE461: mark_regno_dead(int, machine_mode)
(lra-lives.c:373)
==22279==    by 0x4EBF98A: process_bb_lives (lra-lives.c:888)
==22279==    by 0x4EBF98A: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF29A: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1397)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x4EBE8F2: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EBE8F2: update_pseudo_point (lra-lives.c:266)
==22279==    by 0x4EBE8F2: update_pseudo_point(int, int, point_type)
(lra-lives.c:245)
==22279==    by 0x4EBFB3D: process_bb_lives (lra-lives.c:946)
==22279==    by 0x4EBFB3D: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==    by 0x4C19327: symbol_table::finalize_compilation_unit()
(cgraphunit.c:2529)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF262: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1393)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x4EBE4C2: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EBE4C2: mark_pseudo_live(int) (lra-lives.c:323)
==22279==    by 0x4EBE874: mark_regno_live (lra-lives.c:357)
==22279==    by 0x4EBE874: mark_regno_live(int, machine_mode)
(lra-lives.c:346)
==22279==    by 0x4EBFB05: process_bb_lives (lra-lives.c:947)
==22279==    by 0x4EBFB05: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF262: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1393)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x4EBE4EC: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EBE4EC: sparseset_set_bit (sparseset.h:165)
==22279==    by 0x4EBE4EC: mark_pseudo_live(int) (lra-lives.c:327)
==22279==    by 0x4EBE874: mark_regno_live (lra-lives.c:357)
==22279==    by 0x4EBE874: mark_regno_live(int, machine_mode)
(lra-lives.c:346)
==22279==    by 0x4EBFB05: process_bb_lives (lra-lives.c:947)
==22279==    by 0x4EBFB05: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF28C: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1396)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x5027B1E: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x5027B1E: sparseset_and_compl(sparseset_def*,
sparseset_def*, sparseset_def*) (sparseset.c:190)
==22279==    by 0x4EBFC1C: process_bb_lives (lra-lives.c:961)
==22279==    by 0x4EBFC1C: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==    by 0x4C19327: symbol_table::finalize_compilation_unit()
(cgraphunit.c:2529)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF29A: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1397)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Use of uninitialised value of size 8
==22279==    at 0x5027B24: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x5027B24: sparseset_and_compl(sparseset_def*,
sparseset_def*, sparseset_def*) (sparseset.c:190)
==22279==    by 0x4EBFC1C: process_bb_lives (lra-lives.c:961)
==22279==    by 0x4EBFC1C: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==    by 0x4C19327: symbol_table::finalize_compilation_unit()
(cgraphunit.c:2529)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF29A: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1397)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x5027B3A: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x5027B3A: sparseset_set_bit (sparseset.h:165)
==22279==    by 0x5027B3A: sparseset_and_compl(sparseset_def*,
sparseset_def*, sparseset_def*) (sparseset.c:191)
==22279==    by 0x4EBFC1C: process_bb_lives (lra-lives.c:961)
==22279==    by 0x4EBFC1C: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==    by 0x4C19327: symbol_table::finalize_compilation_unit()
(cgraphunit.c:2529)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF2A8: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1398)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Use of uninitialised value of size 8
==22279==    at 0x4EBF824: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EBF824: process_bb_lives (lra-lives.c:790)
==22279==    by 0x4EBF824: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==    by 0x4C19327: symbol_table::finalize_compilation_unit()
(cgraphunit.c:2529)
==22279==    by 0x503A9A3: compile_file() (toplev.c:479)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF262: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1393)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Use of uninitialised value of size 8
==22279==    at 0x4EC0982: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EC0982: process_bb_lives (lra-lives.c:808)
==22279==    by 0x4EC0982: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==    by 0x4C19327: symbol_table::finalize_compilation_unit()
(cgraphunit.c:2529)
==22279==    by 0x503A9A3: compile_file() (toplev.c:479)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF262: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1393)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x4EBE3FD: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EBE3FD: sparseset_set_bit (sparseset.h:165)
==22279==    by 0x4EBE3FD: mark_pseudo_dead(int) (lra-lives.c:340)
==22279==    by 0x4EBE474: mark_regno_dead (lra-lives.c:377)
==22279==    by 0x4EBE474: mark_regno_dead(int, machine_mode)
(lra-lives.c:366)
==22279==    by 0x4EBF98A: process_bb_lives (lra-lives.c:888)
==22279==    by 0x4EBF98A: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF29A: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1397)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x4EBE7C5: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EBE7C5: sparseset_set_bit (sparseset.h:165)
==22279==    by 0x4EBE7C5: make_hard_regno_live(int) (lra-lives.c:288)
==22279==    by 0x4EBE861: mark_regno_live(int, machine_mode)
(lra-lives.c:353)
==22279==    by 0x4EBFB05: process_bb_lives (lra-lives.c:947)
==22279==    by 0x4EBFB05: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF28C: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1396)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x4EBE7C5: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EBE7C5: sparseset_set_bit (sparseset.h:165)
==22279==    by 0x4EBE7C5: make_hard_regno_live(int) (lra-lives.c:288)
==22279==    by 0x4EC038D: process_bb_lives (lra-lives.c:959)
==22279==    by 0x4EC038D: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==    by 0x4C19327: symbol_table::finalize_compilation_unit()
(cgraphunit.c:2529)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF28C: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1396)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Use of uninitialised value of size 8
==22279==    at 0x4EBE810: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EBE810: sparseset_set_bit (sparseset.h:165)
==22279==    by 0x4EBE810: make_hard_regno_live(int) (lra-lives.c:288)
==22279==    by 0x4EC038D: process_bb_lives (lra-lives.c:959)
==22279==    by 0x4EC038D: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==    by 0x4C19327: symbol_table::finalize_compilation_unit()
(cgraphunit.c:2529)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF28C: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1396)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Use of uninitialised value of size 8
==22279==    at 0x5027B3C: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x5027B3C: sparseset_set_bit (sparseset.h:165)
==22279==    by 0x5027B3C: sparseset_and_compl(sparseset_def*,
sparseset_def*, sparseset_def*) (sparseset.c:191)
==22279==    by 0x4EBFC1C: process_bb_lives (lra-lives.c:961)
==22279==    by 0x4EBFC1C: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==    by 0x4C19327: symbol_table::finalize_compilation_unit()
(cgraphunit.c:2529)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF2A8: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1398)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Use of uninitialised value of size 8
==22279==    at 0x4EBE8F7: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EBE8F7: update_pseudo_point (lra-lives.c:266)
==22279==    by 0x4EBE8F7: update_pseudo_point(int, int, point_type)
(lra-lives.c:245)
==22279==    by 0x4EBFB3D: process_bb_lives (lra-lives.c:946)
==22279==    by 0x4EBFB3D: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==    by 0x4C19327: symbol_table::finalize_compilation_unit()
(cgraphunit.c:2529)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF262: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1393)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Use of uninitialised value of size 8
==22279==    at 0x4EBE4C4: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EBE4C4: mark_pseudo_live(int) (lra-lives.c:323)
==22279==    by 0x4EBE874: mark_regno_live (lra-lives.c:357)
==22279==    by 0x4EBE874: mark_regno_live(int, machine_mode)
(lra-lives.c:346)
==22279==    by 0x4EBFB05: process_bb_lives (lra-lives.c:947)
==22279==    by 0x4EBFB05: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF262: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1393)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x4EA84A1: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EA84A1: sparseset_set_bit (sparseset.h:165)
==22279==    by 0x4EA84A1:
setup_live_pseudos_and_spill_after_risky_transforms (lra-assigns.c:1206)
==22279==    by 0x4EA84A1: lra_assign(bool&) (lra-assigns.c:1638)
==22279==    by 0x4EA3B14: lra(_IO_FILE*) (lra.c:2387)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==    by 0x4C19327: symbol_table::finalize_compilation_unit()
(cgraphunit.c:2529)
==22279==    by 0x503A9A3: compile_file() (toplev.c:479)
==22279==    by 0x4B4CEC2: do_compile (toplev.c:2156)
==22279==    by 0x4B4CEC2: toplev::main(int, char**) (toplev.c:2308)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EA7D5F: init_lives (lra-assigns.c:346)
==22279==    by 0x4EA7D5F: lra_assign(bool&) (lra-assigns.c:1619)
==22279==    by 0x4EA3B14: lra(_IO_FILE*) (lra.c:2387)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x4E85EB4: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4E85EB4: mark_pseudo_regno_live(int) (ira-lives.c:326)
==22279==    by 0x4E8641E: mark_pseudo_reg_live (ira-lives.c:410)
==22279==    by 0x4E8641E: make_pseudo_conflict(rtx_def*, reg_class,
rtx_def*, rtx_def*, bool) (ira-lives.c:590)
==22279==    by 0x4E864A3: check_and_make_def_use_conflict (ira-lives.c:612)
==22279==    by 0x4E864A3: check_and_make_def_use_conflict(rtx_def*,
rtx_def*, reg_class, int, reg_class, bool) (ira-lives.c:605)
==22279==    by 0x4E86886: check_and_make_def_conflict(int, int, reg_class,
bool) (ira-lives.c:750)
==22279==    by 0x4E87B6F: make_early_clobber_and_input_conflicts
(ira-lives.c:799)
==22279==    by 0x4E87B6F: process_bb_node_lives(ira_loop_tree_node*)
(ira-lives.c:1428)
==22279==    by 0x4E6B0D6: ira_traverse_loop_tree(bool,
ira_loop_tree_node*, void (*)(ira_loop_tree_node*), void
(*)(ira_loop_tree_node*)) (ira-build.c:1806)
==22279==    by 0x4E885D3: ira_create_allocno_live_ranges()
(ira-lives.c:1734)
==22279==    by 0x4E6C8BC: ira_build() (ira-build.c:3433)
==22279==    by 0x4E63C17: ira (ira.c:5752)
==22279==    by 0x4E63C17: (anonymous
namespace)::pass_ira::execute(function*) (ira.c:6075)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4E88562: ira_create_allocno_live_ranges()
(ira-lives.c:1727)
==22279==    by 0x4E6C8BC: ira_build() (ira-build.c:3433)
==22279==    by 0x4E63C17: ira (ira.c:5752)
==22279==    by 0x4E63C17: (anonymous
namespace)::pass_ira::execute(function*) (ira.c:6075)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x4E85DC0: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4E85DC0: sparseset_set_bit (sparseset.h:165)
==22279==    by 0x4E85DC0: make_object_live(ira_object*) (ira-lives.c:126)
==22279==    by 0x4E85ED0: mark_pseudo_regno_live(int) (ira-lives.c:330)
==22279==    by 0x4E8641E: mark_pseudo_reg_live (ira-lives.c:410)
==22279==    by 0x4E8641E: make_pseudo_conflict(rtx_def*, reg_class,
rtx_def*, rtx_def*, bool) (ira-lives.c:590)
==22279==    by 0x4E864A3: check_and_make_def_use_conflict (ira-lives.c:612)
==22279==    by 0x4E864A3: check_and_make_def_use_conflict(rtx_def*,
rtx_def*, reg_class, int, reg_class, bool) (ira-lives.c:605)
==22279==    by 0x4E86886: check_and_make_def_conflict(int, int, reg_class,
bool) (ira-lives.c:750)
==22279==    by 0x4E87B6F: make_early_clobber_and_input_conflicts
(ira-lives.c:799)
==22279==    by 0x4E87B6F: process_bb_node_lives(ira_loop_tree_node*)
(ira-lives.c:1428)
==22279==    by 0x4E6B0D6: ira_traverse_loop_tree(bool,
ira_loop_tree_node*, void (*)(ira_loop_tree_node*), void
(*)(ira_loop_tree_node*)) (ira-build.c:1806)
==22279==    by 0x4E885D3: ira_create_allocno_live_ranges()
(ira-lives.c:1734)
==22279==    by 0x4E6C8BC: ira_build() (ira-build.c:3433)
==22279==    by 0x4E63C17: ira (ira.c:5752)
==22279==    by 0x4E63C17: (anonymous
namespace)::pass_ira::execute(function*) (ira.c:6075)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4E88562: ira_create_allocno_live_ranges()
(ira-lives.c:1727)
==22279==    by 0x4E6C8BC: ira_build() (ira-build.c:3433)
==22279==    by 0x4E63C17: ira (ira.c:5752)
==22279==    by 0x4E63C17: (anonymous
namespace)::pass_ira::execute(function*) (ira.c:6075)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==
==22279== Conditional jump or move depends on uninitialised value(s)
==22279==    at 0x4EBE224: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EBE224: sparseset_set_bit (sparseset.h:165)
==22279==    by 0x4EBE224: make_hard_regno_dead(int) (lra-lives.c:310)
==22279==    by 0x4EC02E0: process_bb_lives (lra-lives.c:894)
==22279==    by 0x4EC02E0: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==    by 0x4C19327: symbol_table::finalize_compilation_unit()
(cgraphunit.c:2529)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF29A: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1397)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279== Use of uninitialised value of size 8
==22279==    at 0x4EBE4EE: sparseset_bit_p (sparseset.h:146)
==22279==    by 0x4EBE4EE: sparseset_set_bit (sparseset.h:165)
==22279==    by 0x4EBE4EE: mark_pseudo_live(int) (lra-lives.c:327)
==22279==    by 0x4EBE874: mark_regno_live (lra-lives.c:357)
==22279==    by 0x4EBE874: mark_regno_live(int, machine_mode)
(lra-lives.c:346)
==22279==    by 0x4EBFB05: process_bb_lives (lra-lives.c:947)
==22279==    by 0x4EBFB05: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1415)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==    by 0x4C16AE4: output_in_order (cgraphunit.c:2141)
==22279==    by 0x4C16AE4: compile (cgraphunit.c:2345)
==22279==    by 0x4C16AE4: symbol_table::compile() (cgraphunit.c:2259)
==22279==  Uninitialised value was created by a heap allocation
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x50277C2: sparseset_alloc(unsigned int) (sparseset.c:33)
==22279==    by 0x4EBF28C: lra_create_live_ranges_1(bool, bool)
(lra-lives.c:1396)
==22279==    by 0x4EC1A83: lra_create_live_ranges(bool, bool)
(lra-lives.c:1484)
==22279==    by 0x4EA3AEB: lra(_IO_FILE*) (lra.c:2376)
==22279==    by 0x4E5E07C: do_reload (ira.c:5932)
==22279==    by 0x4E5E07C: (anonymous
namespace)::pass_reload::execute(function*) (ira.c:6118)
==22279==    by 0x4F62821: execute_one_pass(opt_pass*) (passes.c:2637)
==22279==    by 0x4F63112: execute_pass_list_1(opt_pass*) (passes.c:2737)
==22279==    by 0x4F63124: execute_pass_list_1(opt_pass*) (passes.c:2738)
==22279==    by 0x4F63155: execute_pass_list(function*, opt_pass*)
(passes.c:2748)
==22279==    by 0x4C156F1: expand (cgraphunit.c:1834)
==22279==    by 0x4C156F1: cgraph_node::expand() (cgraphunit.c:1787)
==22279==
==22279==
==22279== HEAP SUMMARY:
==22279==     in use at exit: 1,485,998 bytes in 1,172 blocks
==22279==   total heap usage: 5,320 allocs, 4,148 frees, 2,892,811 bytes
allocated
==22279==
==22279== 9 bytes in 1 blocks are definitely lost in loss record 6 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x4B99FD4: set_multilib_dir (gcc.c:9849)
==22279==    by 0x4B99FD4: driver::set_up_specs() const (gcc.c:8545)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==    by 0x4B5EF58: gcc_jit_context_compile (libgccjit.c:3523)
==22279==    by 0x402436: main (in /tmp/a.out)
==22279==
==22279== 12 bytes in 1 blocks are definitely lost in loss record 7 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E2AE8B: make_relative_prefix_1
(make-relative-prefix.c:377)
==22279==    by 0x4B90807: process_command(unsigned int,
cl_decoded_option*) (gcc.c:4730)
==22279==    by 0x4B990B4: driver::set_up_specs() const (gcc.c:8319)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==    by 0x4B5EF58: gcc_jit_context_compile (libgccjit.c:3523)
==22279==
==22279== 16 bytes in 1 blocks are definitely lost in loss record 12 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E2AE8B: make_relative_prefix_1
(make-relative-prefix.c:377)
==22279==    by 0x4B90825: process_command(unsigned int,
cl_decoded_option*) (gcc.c:4733)
==22279==    by 0x4B990B4: driver::set_up_specs() const (gcc.c:8319)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==    by 0x4B5EF58: gcc_jit_context_compile (libgccjit.c:3523)
==22279==
==22279== 16 bytes in 1 blocks are definitely lost in loss record 13 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x4B89EFF: save_switch(char const*, unsigned long, char
const* const*, bool, bool) (gcc.c:3906)
==22279==    by 0x4B8E931: driver_handle_option(gcc_options*, gcc_options*,
cl_decoded_option const*, unsigned int, int, unsigned int,
cl_option_handlers const*, diagnostic_context*, void (*)()) (gcc.c:4567)
==22279==    by 0x5DAE43E: handle_option(gcc_options*, gcc_options*,
cl_decoded_option const*, unsigned int, int, unsigned int,
cl_option_handlers const*, bool, diagnostic_context*) (opts-common.c:1181)
==22279==    by 0x5DAE5CC: read_cmdline_option(gcc_options*, gcc_options*,
cl_decoded_option*, unsigned int, unsigned int, cl_option_handlers const*,
diagnostic_context*) (opts-common.c:1431)
==22279==    by 0x4B8FF0A: process_command(unsigned int,
cl_decoded_option*) (gcc.c:4926)
==22279==    by 0x4B990B4: driver::set_up_specs() const (gcc.c:8319)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==
==22279== 16 bytes in 1 blocks are definitely lost in loss record 14 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x4B997BD: set_multilib_dir (gcc.c:9649)
==22279==    by 0x4B997BD: driver::set_up_specs() const (gcc.c:8545)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==    by 0x4B5EF58: gcc_jit_context_compile (libgccjit.c:3523)
==22279==    by 0x402436: main (in /tmp/a.out)
==22279==
==22279== 16 bytes in 1 blocks are definitely lost in loss record 15 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x4B91479: record_temp_file(char const*, int, int)
(gcc.c:2679)
==22279==    by 0x4B918D2: end_going_arg() [clone .part.0] (gcc.c:5648)
==22279==    by 0x4B91CB6: end_going_arg (gcc.c:5627)
==22279==    by 0x4B91CB6: do_spec_1(char const*, int, char const*)
(gcc.c:6060)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==
==22279== 17 bytes in 1 blocks are definitely lost in loss record 16 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x4B9A012: set_multilib_dir (gcc.c:9857)
==22279==    by 0x4B9A012: driver::set_up_specs() const (gcc.c:8545)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==    by 0x4B5EF58: gcc_jit_context_compile (libgccjit.c:3523)
==22279==    by 0x402436: main (in /tmp/a.out)
==22279==
==22279== 18 bytes in 1 blocks are definitely lost in loss record 17 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E239E1: concat (concat.c:147)
==22279==    by 0x4B8915C: for_each_path(path_prefix const*, bool, unsigned
long, void* (*)(char*, void*), void*) (gcc.c:2789)
==22279==    by 0x4B8A0CA: find_a_file(path_prefix const*, char const*,
int, bool) (gcc.c:3072)
==22279==    by 0x4B96481: find_a_program (gcc.c:3100)
==22279==    by 0x4B96481: maybe_putenv_COLLECT_LTO_WRAPPER (gcc.c:8571)
==22279==    by 0x4B96481: driver::maybe_putenv_COLLECT_LTO_WRAPPER() const
(gcc.c:8564)
==22279==    by 0x4B49EE6: driver::main(int, char**) (gcc.c:8130)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==
==22279== 18 bytes in 1 blocks are definitely lost in loss record 18 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E239E1: concat (concat.c:147)
==22279==    by 0x4B8915C: for_each_path(path_prefix const*, bool, unsigned
long, void* (*)(char*, void*), void*) (gcc.c:2789)
==22279==    by 0x4B8A0CA: find_a_file(path_prefix const*, char const*,
int, bool) (gcc.c:3072)
==22279==    by 0x4B8D342: find_a_program (gcc.c:3100)
==22279==    by 0x4B8D342: execute() (gcc.c:3283)
==22279==    by 0x4B97CEC: driver::do_spec_on_infiles() const (gcc.c:8919)
==22279==    by 0x4B4A119: driver::main(int, char**) (gcc.c:8147)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==
==22279== 18 bytes in 1 blocks are definitely lost in loss record 19 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E239E1: concat (concat.c:147)
==22279==    by 0x4B8915C: for_each_path(path_prefix const*, bool, unsigned
long, void* (*)(char*, void*), void*) (gcc.c:2789)
==22279==    by 0x4B8A0CA: find_a_file(path_prefix const*, char const*,
int, bool) (gcc.c:3072)
==22279==    by 0x4B9896C: find_a_program (gcc.c:3100)
==22279==    by 0x4B9896C: driver::maybe_run_linker(char const*) const
(gcc.c:9084)
==22279==    by 0x4B4A128: driver::main(int, char**) (gcc.c:8148)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==
==22279== 18 bytes in 1 blocks are definitely lost in loss record 20 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E239E1: concat (concat.c:147)
==22279==    by 0x4B8915C: for_each_path(path_prefix const*, bool, unsigned
long, void* (*)(char*, void*), void*) (gcc.c:2789)
==22279==    by 0x4B8948B: build_search_list(path_prefix const*, char
const*, bool, bool) (gcc.c:2974)
==22279==    by 0x4B989D8: putenv_from_prefixes (gcc.c:2987)
==22279==    by 0x4B989D8: driver::maybe_run_linker(char const*) const
(gcc.c:9115)
==22279==    by 0x4B4A128: driver::main(int, char**) (gcc.c:8148)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==
==22279== 18 bytes in 1 blocks are definitely lost in loss record 21 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E239E1: concat (concat.c:147)
==22279==    by 0x4B8915C: for_each_path(path_prefix const*, bool, unsigned
long, void* (*)(char*, void*), void*) (gcc.c:2789)
==22279==    by 0x4B8948B: build_search_list(path_prefix const*, char
const*, bool, bool) (gcc.c:2974)
==22279==    by 0x4B98A00: putenv_from_prefixes (gcc.c:2987)
==22279==    by 0x4B98A00: driver::maybe_run_linker(char const*) const
(gcc.c:9116)
==22279==    by 0x4B4A128: driver::main(int, char**) (gcc.c:8148)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==
==22279== 18 bytes in 1 blocks are definitely lost in loss record 22 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E239E1: concat (concat.c:147)
==22279==    by 0x4B8915C: for_each_path(path_prefix const*, bool, unsigned
long, void* (*)(char*, void*), void*) (gcc.c:2789)
==22279==    by 0x4B93242: do_spec_1(char const*, int, char const*)
(gcc.c:6131)
==22279==    by 0x4B92F63: do_spec_1(char const*, int, char const*)
(gcc.c:6790)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==
==22279== 18 bytes in 1 blocks are definitely lost in loss record 23 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E239E1: concat (concat.c:147)
==22279==    by 0x4B8915C: for_each_path(path_prefix const*, bool, unsigned
long, void* (*)(char*, void*), void*) (gcc.c:2789)
==22279==    by 0x4B8A0CA: find_a_file(path_prefix const*, char const*,
int, bool) (gcc.c:3072)
==22279==    by 0x4B91920: find_file (gcc.c:7897)
==22279==    by 0x4B91920: end_going_arg() [clone .part.0] (gcc.c:5634)
==22279==    by 0x4B91CB6: end_going_arg (gcc.c:5627)
==22279==    by 0x4B91CB6: do_spec_1(char const*, int, char const*)
(gcc.c:6060)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9325E: do_spec_1(char const*, int, char const*)
(gcc.c:6622)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==
==22279== 18 bytes in 1 blocks are definitely lost in loss record 24 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E239E1: concat (concat.c:147)
==22279==    by 0x4B8915C: for_each_path(path_prefix const*, bool, unsigned
long, void* (*)(char*, void*), void*) (gcc.c:2789)
==22279==    by 0x4B8A0CA: find_a_file(path_prefix const*, char const*,
int, bool) (gcc.c:3072)
==22279==    by 0x4B91920: find_file (gcc.c:7897)
==22279==    by 0x4B91920: end_going_arg() [clone .part.0] (gcc.c:5634)
==22279==    by 0x4B91CB6: end_going_arg (gcc.c:5627)
==22279==    by 0x4B91CB6: do_spec_1(char const*, int, char const*)
(gcc.c:6060)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==
==22279== 18 bytes in 1 blocks are definitely lost in loss record 25 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E239E1: concat (concat.c:147)
==22279==    by 0x4B8915C: for_each_path(path_prefix const*, bool, unsigned
long, void* (*)(char*, void*), void*) (gcc.c:2789)
==22279==    by 0x4B8A0CA: find_a_file(path_prefix const*, char const*,
int, bool) (gcc.c:3072)
==22279==    by 0x4B8D342: find_a_program (gcc.c:3100)
==22279==    by 0x4B8D342: execute() (gcc.c:3283)
==22279==    by 0x4B91F94: do_spec_1(char const*, int, char const*)
(gcc.c:6036)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==
==22279== 21 bytes in 1 blocks are definitely lost in loss record 26 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E239E1: concat (concat.c:147)
==22279==    by 0x4B9914B: driver::set_up_specs() const (gcc.c:8332)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==    by 0x4B5EF58: gcc_jit_context_compile (libgccjit.c:3523)
==22279==
==22279== 28 bytes in 1 blocks are definitely lost in loss record 31 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E239E1: concat (concat.c:147)
==22279==    by 0x4B9084C: process_command(unsigned int,
cl_decoded_option*) (gcc.c:4737)
==22279==    by 0x4B990B4: driver::set_up_specs() const (gcc.c:8319)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==
==22279== 28 bytes in 1 blocks are definitely lost in loss record 32 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E239E1: concat (concat.c:147)
==22279==    by 0x4B99131: driver::set_up_specs() const (gcc.c:8330)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==    by 0x4B5EF58: gcc_jit_context_compile (libgccjit.c:3523)
==22279==
==22279== 31 bytes in 1 blocks are definitely lost in loss record 34 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E30ABE: xstrdup (xstrdup.c:34)
==22279==    by 0x4B8FAF6: process_command(unsigned int,
cl_decoded_option*) (gcc.c:4695)
==22279==    by 0x4B990B4: driver::set_up_specs() const (gcc.c:8319)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==
==22279== 32 (16 direct, 16 indirect) bytes in 1 blocks are definitely lost
in loss record 35 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x4B91441: record_temp_file(char const*, int, int)
(gcc.c:2661)
==22279==    by 0x4B918D2: end_going_arg() [clone .part.0] (gcc.c:5648)
==22279==    by 0x4B91CB6: end_going_arg (gcc.c:5627)
==22279==    by 0x4B91CB6: do_spec_1(char const*, int, char const*)
(gcc.c:6060)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==
==22279== 34 bytes in 1 blocks are definitely lost in loss record 36 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x4B4D4BD: init_asm_output (toplev.c:701)
==22279==    by 0x4B4D4BD: lang_dependent_init (toplev.c:1852)
==22279==    by 0x4B4D4BD: do_compile (toplev.c:2141)
==22279==    by 0x4B4D4BD: toplev::main(int, char**) (toplev.c:2308)
==22279==    by 0x4B7AE9E: gcc::jit::playback::context::compile()
(jit-playback.c:2311)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==    by 0x4B5EF58: gcc_jit_context_compile (libgccjit.c:3523)
==22279==    by 0x402436: main (in /tmp/a.out)
==22279==
==22279== 36 bytes in 2 blocks are definitely lost in loss record 37 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E239E1: concat (concat.c:147)
==22279==    by 0x4B8915C: for_each_path(path_prefix const*, bool, unsigned
long, void* (*)(char*, void*), void*) (gcc.c:2789)
==22279==    by 0x4B8A0CA: find_a_file(path_prefix const*, char const*,
int, bool) (gcc.c:3072)
==22279==    by 0x4B91920: find_file (gcc.c:7897)
==22279==    by 0x4B91920: end_going_arg() [clone .part.0] (gcc.c:5634)
==22279==    by 0x4B91CB6: end_going_arg (gcc.c:5627)
==22279==    by 0x4B91CB6: do_spec_1(char const*, int, char const*)
(gcc.c:6060)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B92792: do_spec_1(char const*, int, char const*)
(gcc.c:6667)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==
==22279== 39 bytes in 1 blocks are definitely lost in loss record 38 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E239E1: concat (concat.c:147)
==22279==    by 0x4B99669: driver::set_up_specs() const (gcc.c:8534)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==    by 0x4B5EF58: gcc_jit_context_compile (libgccjit.c:3523)
==22279==
==22279== 40 bytes in 1 blocks are definitely lost in loss record 50 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E30A27: xrealloc (xmalloc.c:179)
==22279==    by 0x4B917AE: reserve<char const*> (vec.h:290)
==22279==    by 0x4B917AE: reserve (vec.h:1858)
==22279==    by 0x4B917AE: safe_push (vec.h:1967)
==22279==    by 0x4B917AE: store_arg(char const*, int, int) (gcc.c:2181)
==22279==    by 0x4B918D2: end_going_arg() [clone .part.0] (gcc.c:5648)
==22279==    by 0x4B93F1A: end_going_arg (gcc.c:5627)
==22279==    by 0x4B93F1A: do_spec_2(char const*, char const*) (gcc.c:5743)
==22279==    by 0x4B955BC: do_self_spec(char const*) (gcc.c:5805)
==22279==    by 0x4B959CB: do_option_spec(char const*, char const*)
(gcc.c:5794)
==22279==    by 0x4B9AA20: driver_get_configure_time_options(void (*)(char
const*, void*), void*) (gcc.c:11257)
==22279==    by 0x4B79B9A:
gcc::jit::playback::context::make_fake_args(vec<char*, va_heap, vl_ptr>*,
char const*, vec<gcc::jit::recording::requested_dump, va_heap, vl_ptr>*)
(jit-playback.c:2756)
==22279==    by 0x4B7ABBC: gcc::jit::playback::context::compile()
(jit-playback.c:2297)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==    by 0x4B5EF58: gcc_jit_context_compile (libgccjit.c:3523)
==22279==
==22279== 48 bytes in 1 blocks are definitely lost in loss record 54 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E239E1: concat (concat.c:147)
==22279==    by 0x4B9949B: driver::set_up_specs() const (gcc.c:8452)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==    by 0x4B5EF58: gcc_jit_context_compile (libgccjit.c:3523)
==22279==
==22279== 59 (40 direct, 19 indirect) bytes in 1 blocks are definitely lost
in loss record 102 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x4B934F7: do_spec_1(char const*, int, char const*)
(gcc.c:6353)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B92F63: do_spec_1(char const*, int, char const*)
(gcc.c:6790)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==
==22279== 74 bytes in 1 blocks are definitely lost in loss record 116 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x4B89335: for_each_path(path_prefix const*, bool, unsigned
long, void* (*)(char*, void*), void*) (gcc.c:2813)
==22279==    by 0x4B8A0CA: find_a_file(path_prefix const*, char const*,
int, bool) (gcc.c:3072)
==22279==    by 0x4B99167: driver::set_up_specs() const (gcc.c:8334)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==
==22279== 75 bytes in 1 blocks are definitely lost in loss record 118 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E239E1: concat (concat.c:147)
==22279==    by 0x4B902FF: process_command(unsigned int,
cl_decoded_option*) (gcc.c:5409)
==22279==    by 0x4B990B4: driver::set_up_specs() const (gcc.c:8319)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==
==22279== 75 bytes in 1 blocks are definitely lost in loss record 119 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E239E1: concat (concat.c:147)
==22279==    by 0x4B9032E: process_command(unsigned int,
cl_decoded_option*) (gcc.c:5412)
==22279==    by 0x4B990B4: driver::set_up_specs() const (gcc.c:8319)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==
==22279== 88 bytes in 1 blocks are definitely lost in loss record 128 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E30A27: xrealloc (xmalloc.c:179)
==22279==    by 0x4B95DA7: reserve<char const*> (vec.h:290)
==22279==    by 0x4B95DA7: reserve (vec.h:1858)
==22279==    by 0x4B95DA7: reserve_exact (vec.h:1878)
==22279==    by 0x4B95DA7: create (vec.h:1893)
==22279==    by 0x4B95DA7: alloc_args (gcc.c:2156)
==22279==    by 0x4B95DA7: driver::global_initializations() (gcc.c:8241)
==22279==    by 0x4B49EAC: driver::main(int, char**) (gcc.c:8125)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==    by 0x4B5EF58: gcc_jit_context_compile (libgccjit.c:3523)
==22279==    by 0x402436: main (in /tmp/a.out)
==22279==
==22279== 88 bytes in 1 blocks are definitely lost in loss record 129 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E30A27: xrealloc (xmalloc.c:179)
==22279==    by 0x4B94489: reserve<char const*> (vec.h:290)
==22279==    by 0x4B94489: reserve (vec.h:1858)
==22279==    by 0x4B94489: reserve_exact (vec.h:1878)
==22279==    by 0x4B94489: create (vec.h:1893)
==22279==    by 0x4B94489: alloc_args (gcc.c:2156)
==22279==    by 0x4B94489: eval_spec_function (gcc.c:6904)
==22279==    by 0x4B94489: handle_spec_function(char const*, bool*, char
const*) (gcc.c:6993)
==22279==    by 0x4B94B6B: handle_braces(char const*) (gcc.c:7147)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B93F08: do_spec_2(char const*, char const*) (gcc.c:5741)
==22279==    by 0x4B955BC: do_self_spec(char const*) (gcc.c:5805)
==22279==    by 0x4B992AA: driver::set_up_specs() const (gcc.c:8367)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==
==22279== 88 bytes in 1 blocks are definitely lost in loss record 130 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E30A27: xrealloc (xmalloc.c:179)
==22279==    by 0x4B94489: reserve<char const*> (vec.h:290)
==22279==    by 0x4B94489: reserve (vec.h:1858)
==22279==    by 0x4B94489: reserve_exact (vec.h:1878)
==22279==    by 0x4B94489: create (vec.h:1893)
==22279==    by 0x4B94489: alloc_args (gcc.c:2156)
==22279==    by 0x4B94489: eval_spec_function (gcc.c:6904)
==22279==    by 0x4B94489: handle_spec_function(char const*, bool*, char
const*) (gcc.c:6993)
==22279==    by 0x4B94B6B: handle_braces(char const*) (gcc.c:7147)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B92F63: do_spec_1(char const*, int, char const*)
(gcc.c:6790)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==
==22279== 88 bytes in 1 blocks are definitely lost in loss record 131 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E30A27: xrealloc (xmalloc.c:179)
==22279==    by 0x4B94489: reserve<char const*> (vec.h:290)
==22279==    by 0x4B94489: reserve (vec.h:1858)
==22279==    by 0x4B94489: reserve_exact (vec.h:1878)
==22279==    by 0x4B94489: create (vec.h:1893)
==22279==    by 0x4B94489: alloc_args (gcc.c:2156)
==22279==    by 0x4B94489: eval_spec_function (gcc.c:6904)
==22279==    by 0x4B94489: handle_spec_function(char const*, bool*, char
const*) (gcc.c:6993)
==22279==    by 0x4B94B6B: handle_braces(char const*) (gcc.c:7147)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B92F63: do_spec_1(char const*, int, char const*)
(gcc.c:6790)
==22279==    by 0x4B92F63: do_spec_1(char const*, int, char const*)
(gcc.c:6790)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==
==22279== 211 bytes in 1 blocks are definitely lost in loss record 146 of
213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x5E30ABE: xstrdup (xstrdup.c:34)
==22279==    by 0x4B88BDB: set_spec(char const*, char const*, bool)
(gcc.c:2089)
==22279==    by 0x4B8BDA8: read_specs(char const*, bool, bool) (gcc.c:2581)
==22279==    by 0x4B99543: driver::set_up_specs() const (gcc.c:8337)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==
==22279== 646 bytes in 47 blocks are definitely lost in loss record 166 of
213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x4B8B982: save_string (gcc.c:9300)
==22279==    by 0x4B8B982: read_specs(char const*, bool, bool) (gcc.c:2542)
==22279==    by 0x4B99543: driver::set_up_specs() const (gcc.c:8337)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==    by 0x4B5EF58: gcc_jit_context_compile (libgccjit.c:3523)
==22279==
==22279== 792 bytes in 9 blocks are definitely lost in loss record 167 of
213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E30A27: xrealloc (xmalloc.c:179)
==22279==    by 0x4B94489: reserve<char const*> (vec.h:290)
==22279==    by 0x4B94489: reserve (vec.h:1858)
==22279==    by 0x4B94489: reserve_exact (vec.h:1878)
==22279==    by 0x4B94489: create (vec.h:1893)
==22279==    by 0x4B94489: alloc_args (gcc.c:2156)
==22279==    by 0x4B94489: eval_spec_function (gcc.c:6904)
==22279==    by 0x4B94489: handle_spec_function(char const*, bool*, char
const*) (gcc.c:6993)
==22279==    by 0x4B94B6B: handle_braces(char const*) (gcc.c:7147)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==    by 0x4B92A0C: do_spec_1(char const*, int, char const*)
(gcc.c:6675)
==22279==    by 0x4B9512A: process_brace_body (gcc.c:7361)
==22279==    by 0x4B9512A: handle_braces(char const*) (gcc.c:7268)
==22279==
==22279== 2,842 bytes in 1 blocks are definitely lost in loss record 185 of
213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3098B: xmalloc (xmalloc.c:149)
==22279==    by 0x4B8BA0C: save_string (gcc.c:9300)
==22279==    by 0x4B8BA0C: read_specs(char const*, bool, bool) (gcc.c:2556)
==22279==    by 0x4B99543: driver::set_up_specs() const (gcc.c:8337)
==22279==    by 0x4B49EBC: driver::main(int, char**) (gcc.c:8127)
==22279==    by 0x4B78DF7:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2979)
==22279==    by 0x4B7B632: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2967)
==22279==    by 0x4B7C7C2: gcc::jit::playback::context::convert_to_dso(char
const*) (jit-playback.c:2888)
==22279==    by 0x4B7C819:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2370)
==22279==    by 0x4B7B029: gcc::jit::playback::context::compile()
(jit-playback.c:2343)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==    by 0x4B5EF58: gcc_jit_context_compile (libgccjit.c:3523)
==22279==
==22279== 12,611 (48 direct, 12,563 indirect) bytes in 1 blocks are
definitely lost in loss record 191 of 213
==22279==    at 0x4843839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==22279==    by 0x5E3EF2B: operator new(unsigned long) (in
/home/mnieper/gcc/install/lib/libgccjit.so.0.0.1)
==22279==    by 0x4F642A9: gcc::pass_manager::register_pass_name(opt_pass*,
char const*) (passes.c:906)
==22279==    by 0x4F644B8:
gcc::pass_manager::register_one_dump_file(opt_pass*) (passes.c:878)
==22279==    by 0x4F64598:
gcc::pass_manager::register_dump_files(opt_pass*) (passes.c:890)
==22279==    by 0x4F6AF66: gcc::pass_manager::pass_manager(gcc::context*)
(passes.c:1642)
==22279==    by 0x4B4BAC8: general_init (toplev.c:1107)
==22279==    by 0x4B4BAC8: toplev::main(int, char**) (toplev.c:2240)
==22279==    by 0x4B7AE9E: gcc::jit::playback::context::compile()
(jit-playback.c:2311)
==22279==    by 0x4B6F345: gcc::jit::recording::context::compile()
(jit-recording.c:1475)
==22279==    by 0x4B5EF58: gcc_jit_context_compile (libgccjit.c:3523)
==22279==    by 0x402436: main (in /tmp/a.out)
==22279==
==22279== LEAK SUMMARY:
==22279==    definitely lost: 5,740 bytes in 94 blocks
==22279==    indirectly lost: 12,598 bytes in 334 blocks
==22279==      possibly lost: 0 bytes in 0 blocks
==22279==    still reachable: 1,467,660 bytes in 744 blocks
==22279==         suppressed: 0 bytes in 0 blocks
==22279== Reachable blocks (those to which a pointer was found) are not
shown.
==22279== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==22279==
==22279== For lists of detected and suppressed errors, rerun with: -s
==22279== ERROR SUMMARY: 226 errors from 68 contexts (suppressed: 0 from 0)

Am Do., 16. Dez. 2021 um 18:17 Uhr schrieb Marc Nieper-Wißkirchen <
marc.nieper+gnu@gmail.com>:

> When I compile a gccjit context, Valgrind complains about a lot of memory
> leaks.  Below I have attached a reproducing file extracted from my
> project.  To reproduce the errors, I run:
>
> $ gcc dummy.c reproducer.c -lgccjit -rdynamic
> $ valgrind ./a.out
>
> Thanks,
>
> Marc
>
> ++++
>
> reproducer.c:
>
> /* This code was autogenerated by gcc_jit_context_dump_reproducer_to_file.
>
>    libgccjit (Ubuntu 11.2.0-7ubuntu2) version 11.2.0 (x86_64-linux-gnu)
>   compiled by GNU C version 11.2.0, GMP version 6.2.1, MPFR version 4.1.0,
> MPC version 1.2.0, isl version isl-0.24-GMP
>
> */
> #include <libgccjit.h>
>
> #pragma GCC diagnostic ignored "-Wunused-variable"
>
> static void
> set_options (gcc_jit_context *ctxt_0x6db8b10,
>              gcc_jit_context *ctxt_0x6dbd370);
>
> static void
> create_code (gcc_jit_context *ctxt_0x6db8b10,
>              gcc_jit_context *ctxt_0x6dbd370);
>
> int
> main (int argc, const char **argv)
> {
>   gcc_jit_context *ctxt_0x6db8b10;
>   gcc_jit_context *ctxt_0x6dbd370;
>   gcc_jit_result *result;
>
>   ctxt_0x6db8b10 = gcc_jit_context_acquire ();
>   ctxt_0x6dbd370 = gcc_jit_context_new_child_context (ctxt_0x6db8b10);
>   set_options (ctxt_0x6db8b10,
>                ctxt_0x6dbd370);
>   create_code (ctxt_0x6db8b10,
>                ctxt_0x6dbd370);
>   result = gcc_jit_context_compile (ctxt_0x6dbd370);
>   gcc_jit_context_release (ctxt_0x6dbd370);
>   gcc_jit_context_release (ctxt_0x6db8b10);
>   gcc_jit_result_release (result);
>   return 0;
> }
>
> static void
> set_options (gcc_jit_context *ctxt_0x6db8b10,
>              gcc_jit_context *ctxt_0x6dbd370)
> {
>   /* Set options for ctxt_0x6db8b10.  */
>   /* String options.  */
>   gcc_jit_context_set_str_option (ctxt_0x6db8b10,
>                                   GCC_JIT_STR_OPTION_PROGNAME,
>                                   NULL);
>   /* Int options.  */
>   gcc_jit_context_set_int_option (ctxt_0x6db8b10,
>                                   GCC_JIT_INT_OPTION_OPTIMIZATION_LEVEL,
>                                   0);
>   /* Boolean options.  */
>   gcc_jit_context_set_bool_option (ctxt_0x6db8b10,
>                                   GCC_JIT_BOOL_OPTION_DEBUGINFO,
>                                   0);
>   gcc_jit_context_set_bool_option (ctxt_0x6db8b10,
>                                   GCC_JIT_BOOL_OPTION_DUMP_INITIAL_TREE,
>                                   0);
>   gcc_jit_context_set_bool_option (ctxt_0x6db8b10,
>                                   GCC_JIT_BOOL_OPTION_DUMP_INITIAL_GIMPLE,
>                                   0);
>   gcc_jit_context_set_bool_option (ctxt_0x6db8b10,
>                                   GCC_JIT_BOOL_OPTION_DUMP_GENERATED_CODE,
>                                   0);
>   gcc_jit_context_set_bool_option (ctxt_0x6db8b10,
>                                   GCC_JIT_BOOL_OPTION_DUMP_SUMMARY,
>                                   0);
>   gcc_jit_context_set_bool_option (ctxt_0x6db8b10,
>                                   GCC_JIT_BOOL_OPTION_DUMP_EVERYTHING,
>                                   0);
>   gcc_jit_context_set_bool_option (ctxt_0x6db8b10,
>                                   GCC_JIT_BOOL_OPTION_SELFCHECK_GC,
>                                   0);
>   gcc_jit_context_set_bool_option (ctxt_0x6db8b10,
>                                   GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES,
>                                   0);
>   gcc_jit_context_set_bool_allow_unreachable_blocks (ctxt_0x6db8b10, 0);
>   gcc_jit_context_set_bool_use_external_driver (ctxt_0x6db8b10, 0);
>
>   /* Set options for ctxt_0x6dbd370.  */
>   /* String options.  */
>   gcc_jit_context_set_str_option (ctxt_0x6dbd370,
>                                   GCC_JIT_STR_OPTION_PROGNAME,
>                                   NULL);
>   /* Int options.  */
>   gcc_jit_context_set_int_option (ctxt_0x6dbd370,
>                                   GCC_JIT_INT_OPTION_OPTIMIZATION_LEVEL,
>                                   0);
>   /* Boolean options.  */
>   gcc_jit_context_set_bool_option (ctxt_0x6dbd370,
>                                   GCC_JIT_BOOL_OPTION_DEBUGINFO,
>                                   0);
>   gcc_jit_context_set_bool_option (ctxt_0x6dbd370,
>                                   GCC_JIT_BOOL_OPTION_DUMP_INITIAL_TREE,
>                                   0);
>   gcc_jit_context_set_bool_option (ctxt_0x6dbd370,
>                                   GCC_JIT_BOOL_OPTION_DUMP_INITIAL_GIMPLE,
>                                   0);
>   gcc_jit_context_set_bool_option (ctxt_0x6dbd370,
>                                   GCC_JIT_BOOL_OPTION_DUMP_GENERATED_CODE,
>                                   0);
>   gcc_jit_context_set_bool_option (ctxt_0x6dbd370,
>                                   GCC_JIT_BOOL_OPTION_DUMP_SUMMARY,
>                                   0);
>   gcc_jit_context_set_bool_option (ctxt_0x6dbd370,
>                                   GCC_JIT_BOOL_OPTION_DUMP_EVERYTHING,
>                                   0);
>   gcc_jit_context_set_bool_option (ctxt_0x6dbd370,
>                                   GCC_JIT_BOOL_OPTION_SELFCHECK_GC,
>                                   0);
>   gcc_jit_context_set_bool_option (ctxt_0x6dbd370,
>                                   GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES,
>                                   0);
>   gcc_jit_context_set_bool_allow_unreachable_blocks (ctxt_0x6dbd370, 0);
>   gcc_jit_context_set_bool_use_external_driver (ctxt_0x6dbd370, 0);
> }
>
> static void
> create_code (gcc_jit_context *ctxt_0x6db8b10,
>              gcc_jit_context *ctxt_0x6dbd370)
> {
>   /* Replay of API calls for ctxt_0x6db8b10.  */
>   gcc_jit_type *type_size_t = gcc_jit_context_get_type (ctxt_0x6db8b10,
> GCC_JIT_TYPE_SIZE_T);
>   gcc_jit_type *type_void = gcc_jit_context_get_type (ctxt_0x6db8b10,
> GCC_JIT_TYPE_VOID);
>   gcc_jit_type *type_unsigned_long_long = gcc_jit_context_get_type
> (ctxt_0x6db8b10, GCC_JIT_TYPE_UNSIGNED_LONG_LONG);
>   gcc_jit_type *type_void__ = gcc_jit_context_get_type (ctxt_0x6db8b10,
> GCC_JIT_TYPE_VOID_PTR);
>   gcc_jit_field *field_val =
>     gcc_jit_context_new_field (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                type_unsigned_long_long, /* gcc_jit_type
> *type, */
>                                "val"); /* const char *name */
>   gcc_jit_field *field_ptr =
>     gcc_jit_context_new_field (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                type_void__, /* gcc_jit_type *type, */
>                                "ptr"); /* const char *name */
>   gcc_jit_field *fields_for_union_union_yyy_object[2] = {
>     field_val,
>     field_ptr,
>   };
>   gcc_jit_type *union_union_yyy_object =
>     gcc_jit_context_new_union_type (ctxt_0x6db8b10,
>                                     NULL, /* gcc_jit_location *loc */
>                                     "yyy_object", /* const char *name */
>                                     2, /* int num_fields */
>                                     fields_for_union_union_yyy_object); /*
> gcc_jit_field **fields */
>   gcc_jit_field *field_val_0x6db9660 =
>     gcc_jit_context_new_field (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                type_unsigned_long_long, /* gcc_jit_type
> *type, */
>                                "val"); /* const char *name */
>   gcc_jit_field *field_ptr_0x6db97b0 =
>     gcc_jit_context_new_field (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                type_void__, /* gcc_jit_type *type, */
>                                "ptr"); /* const char *name */
>   gcc_jit_field *fields_for_union_union_yyy_header[2] = {
>     field_val_0x6db9660,
>     field_ptr_0x6db97b0,
>   };
>   gcc_jit_type *union_union_yyy_header =
>     gcc_jit_context_new_union_type (ctxt_0x6db8b10,
>                                     NULL, /* gcc_jit_location *loc */
>                                     "yyy_header", /* const char *name */
>                                     2, /* int num_fields */
>                                     fields_for_union_union_yyy_header); /*
> gcc_jit_field **fields */
>   gcc_jit_struct *struct_struct_yyy_label =
>     gcc_jit_context_new_opaque_struct (ctxt_0x6db8b10,
>                                        NULL, /* gcc_jit_location *loc */
>                                        "yyy_label"); /* const char *name */
>   gcc_jit_type *type_struct_yyy_label__ =
>     gcc_jit_type_get_pointer (gcc_jit_struct_as_type
> (struct_struct_yyy_label));
>   gcc_jit_field *field_header =
>     gcc_jit_context_new_field (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                union_union_yyy_header, /* gcc_jit_type
> *type, */
>                                "header"); /* const char *name */
>   gcc_jit_field *field_ip =
>     gcc_jit_context_new_field (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                type_struct_yyy_label__, /* gcc_jit_type
> *type, */
>                                "ip"); /* const char *name */
>   gcc_jit_struct *struct_struct_yyy_thread =
>     gcc_jit_context_new_opaque_struct (ctxt_0x6db8b10,
>                                        NULL, /* gcc_jit_location *loc */
>                                        "yyy_thread"); /* const char *name
> */
>   gcc_jit_field *fields_fields[2] = {
>     field_header,
>     field_ip,
>   };
>   gcc_jit_struct_set_fields (struct_struct_yyy_thread, /* gcc_jit_struct
> *struct_type */
>                              NULL, /* gcc_jit_location *loc */
>                              2, /* int num_fields */
>                              fields_fields); /* gcc_jit_field **fields */
>   gcc_jit_type *type_struct_yyy_thread__ =
>     gcc_jit_type_get_pointer (gcc_jit_struct_as_type
> (struct_struct_yyy_thread));
>   gcc_jit_type *params_for_function_type_void__struct_yyy_thread___[1] = {
>     type_struct_yyy_thread__,
>   };
>   gcc_jit_type *ptr_to_void______struct_yyy_thread___ =
>     gcc_jit_context_new_function_ptr_type (ctxt_0x6db8b10, /*
> gcc_jit_context *ctxt */
>                                            NULL, /* gcc_jit_location *loc
> */
>                                            type_void, /* gcc_jit_type
> *return_type */
>                                            1, /* int num_params */
>
>  params_for_function_type_void__struct_yyy_thread___, /* gcc_jit_type
> **param_types */
>                                            0); /* int is_variadic */
>   gcc_jit_struct *struct_struct_yyy_module =
>     gcc_jit_context_new_opaque_struct (ctxt_0x6db8b10,
>                                        NULL, /* gcc_jit_location *loc */
>                                        "yyy_module"); /* const char *name
> */
>   gcc_jit_field *fields_fields_0x6dba720[0] = {
>   };
>   gcc_jit_struct_set_fields (struct_struct_yyy_module, /* gcc_jit_struct
> *struct_type */
>                              NULL, /* gcc_jit_location *loc */
>                              0, /* int num_fields */
>                              fields_fields_0x6dba720); /* gcc_jit_field
> **fields */
>   gcc_jit_type *type_struct_yyy_module__ =
>     gcc_jit_type_get_pointer (gcc_jit_struct_as_type
> (struct_struct_yyy_module));
>   gcc_jit_field *field_proc_count =
>     gcc_jit_context_new_field (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                type_size_t, /* gcc_jit_type *type, */
>                                "proc_count"); /* const char *name */
>   gcc_jit_field *field_fv_count =
>     gcc_jit_context_new_field (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                type_size_t, /* gcc_jit_type *type, */
>                                "fv_count"); /* const char *name */
>   gcc_jit_struct *struct_struct_yyy_closure_descriptor =
>     gcc_jit_context_new_opaque_struct (ctxt_0x6db8b10,
>                                        NULL, /* gcc_jit_location *loc */
>                                        "yyy_closure_descriptor"); /* const
> char *name */
>   gcc_jit_field *fields_fields_0x6dbae00[2] = {
>     field_proc_count,
>     field_fv_count,
>   };
>   gcc_jit_struct_set_fields (struct_struct_yyy_closure_descriptor, /*
> gcc_jit_struct *struct_type */
>                              NULL, /* gcc_jit_location *loc */
>                              2, /* int num_fields */
>                              fields_fields_0x6dbae00); /* gcc_jit_field
> **fields */
>   gcc_jit_type *type_struct_yyy_closure_descriptor__ =
>     gcc_jit_type_get_pointer (gcc_jit_struct_as_type
> (struct_struct_yyy_closure_descriptor));
>   gcc_jit_field *field_cd =
>     gcc_jit_context_new_field (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                type_struct_yyy_closure_descriptor__, /*
> gcc_jit_type *type, */
>                                "cd"); /* const char *name */
>   gcc_jit_field *field_clo_off =
>     gcc_jit_context_new_field (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                type_size_t, /* gcc_jit_type *type, */
>                                "clo_off"); /* const char *name */
>   gcc_jit_struct *struct_struct_yyy_procedure_descriptor =
>     gcc_jit_context_new_opaque_struct (ctxt_0x6db8b10,
>                                        NULL, /* gcc_jit_location *loc */
>                                        "yyy_procedure_descriptor"); /*
> const char *name */
>   gcc_jit_field *fields_fields_0x6dbb350[2] = {
>     field_cd,
>     field_clo_off,
>   };
>   gcc_jit_struct_set_fields (struct_struct_yyy_procedure_descriptor, /*
> gcc_jit_struct *struct_type */
>                              NULL, /* gcc_jit_location *loc */
>                              2, /* int num_fields */
>                              fields_fields_0x6dbb350); /* gcc_jit_field
> **fields */
>   gcc_jit_type *type_struct_yyy_procedure_descriptor__ =
>     gcc_jit_type_get_pointer (gcc_jit_struct_as_type
> (struct_struct_yyy_procedure_descriptor));
>   gcc_jit_field *field_header_0x6dbb570 =
>     gcc_jit_context_new_field (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                union_union_yyy_header, /* gcc_jit_type
> *type, */
>                                "header"); /* const char *name */
>   gcc_jit_field *field_pd =
>     gcc_jit_context_new_field (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                type_struct_yyy_procedure_descriptor__, /*
> gcc_jit_type *type, */
>                                "pd"); /* const char *name */
>   gcc_jit_struct *struct_struct_x =
>     gcc_jit_context_new_opaque_struct (ctxt_0x6db8b10,
>                                        NULL, /* gcc_jit_location *loc */
>                                        "x"); /* const char *name */
>   gcc_jit_field *fields_fields_0x6dbbb60[2] = {
>     field_header_0x6dbb570,
>     field_pd,
>   };
>   gcc_jit_struct_set_fields (struct_struct_x, /* gcc_jit_struct
> *struct_type */
>                              NULL, /* gcc_jit_location *loc */
>                              2, /* int num_fields */
>                              fields_fields_0x6dbbb60); /* gcc_jit_field
> **fields */
>   gcc_jit_field *field_x =
>     gcc_jit_context_new_field (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                gcc_jit_struct_as_type (struct_struct_x),
> /* gcc_jit_type *type, */
>                                "x"); /* const char *name */
>   gcc_jit_field *field_mod =
>     gcc_jit_context_new_field (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                type_struct_yyy_module__, /* gcc_jit_type
> *type, */
>                                "mod"); /* const char *name */
>   gcc_jit_field *field_prog =
>     gcc_jit_context_new_field (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                ptr_to_void______struct_yyy_thread___, /*
> gcc_jit_type *type, */
>                                "prog"); /* const char *name */
>   gcc_jit_struct *struct_struct_y =
>     gcc_jit_context_new_opaque_struct (ctxt_0x6db8b10,
>                                        NULL, /* gcc_jit_location *loc */
>                                        "y"); /* const char *name */
>   gcc_jit_field *fields_fields_0x6dbc250[2] = {
>     field_mod,
>     field_prog,
>   };
>   gcc_jit_struct_set_fields (struct_struct_y, /* gcc_jit_struct
> *struct_type */
>                              NULL, /* gcc_jit_location *loc */
>                              2, /* int num_fields */
>                              fields_fields_0x6dbc250); /* gcc_jit_field
> **fields */
>   gcc_jit_field *field_y =
>     gcc_jit_context_new_field (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                gcc_jit_struct_as_type (struct_struct_y),
> /* gcc_jit_type *type, */
>                                "y"); /* const char *name */
>   gcc_jit_field *fields_for_union_union_a[2] = {
>     field_x,
>     field_y,
>   };
>   gcc_jit_type *union_union_a =
>     gcc_jit_context_new_union_type (ctxt_0x6db8b10,
>                                     NULL, /* gcc_jit_location *loc */
>                                     "a", /* const char *name */
>                                     2, /* int num_fields */
>                                     fields_for_union_union_a); /*
> gcc_jit_field **fields */
>   gcc_jit_field *field_a =
>     gcc_jit_context_new_field (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                union_union_a, /* gcc_jit_type *type, */
>                                "a"); /* const char *name */
>   gcc_jit_field *fields_fields_0x6dbc800[1] = {
>     field_a,
>   };
>   gcc_jit_struct_set_fields (struct_struct_yyy_label, /* gcc_jit_struct
> *struct_type */
>                              NULL, /* gcc_jit_location *loc */
>                              1, /* int num_fields */
>                              fields_fields_0x6dbc800); /* gcc_jit_field
> **fields */
>   gcc_jit_param *param_thd =
>     gcc_jit_context_new_param (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                type_struct_yyy_thread__, /*gcc_jit_type
> *type */
>                                "thd"); /* const char *name */
>   gcc_jit_param *param_labels =
>     gcc_jit_context_new_param (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                type_struct_yyy_label__, /*gcc_jit_type
> *type */
>                                "labels"); /* const char *name */
>   gcc_jit_param *param_glob_count =
>     gcc_jit_context_new_param (ctxt_0x6db8b10,
>                                NULL, /* gcc_jit_location *loc */
>                                type_size_t, /*gcc_jit_type *type */
>                                "glob_count"); /* const char *name */
>   gcc_jit_param *params_for_func_yyy_make_module[3] = {
>     param_thd,
>     param_labels,
>     param_glob_count,
>   };
>   gcc_jit_function *func_yyy_make_module =
>     gcc_jit_context_new_function (ctxt_0x6db8b10, /* gcc_jit_context *ctxt
> */
>                                   NULL, /* gcc_jit_location *loc */
>                                   GCC_JIT_FUNCTION_IMPORTED, /* enum
> gcc_jit_function_kind kind */
>                                   type_struct_yyy_module__, /*
> gcc_jit_type *return_type */
>                                   "yyy_make_module", /* const char *name */
>                                   3, /* int num_params */
>                                   params_for_func_yyy_make_module, /*
> gcc_jit_param **params */
>                                   0); /* int is_variadic */
>   gcc_jit_type *type_int = gcc_jit_context_get_type (ctxt_0x6db8b10,
> GCC_JIT_TYPE_INT);
>   gcc_jit_function *func___builtin_trap =
>     gcc_jit_context_get_builtin_function (ctxt_0x6db8b10,
>                                           "__builtin_trap");
>
>
>   /* Replay of API calls for ctxt_0x6dbd370.  */
>   gcc_jit_type *array_type_struct_yyy_label_1_ =
>     gcc_jit_context_new_array_type (ctxt_0x6dbd370,
>                                     NULL, /* gcc_jit_location *loc */
>                                     gcc_jit_struct_as_type
> (struct_struct_yyy_label), /* gcc_jit_type *element_type */
>                                     1); /* int num_elements */
>   gcc_jit_lvalue *block_labels =
>     gcc_jit_context_new_global (ctxt_0x6dbd370, /* gcc_jit_context *ctxt */
>                                 NULL, /* gcc_jit_location *loc */
>                                 GCC_JIT_GLOBAL_INTERNAL, /* enum
> gcc_jit_global_kind kind */
>                                 array_type_struct_yyy_label_1_, /*
> gcc_jit_type *type */
>                                 "labels"); /* const char *name */
>   gcc_jit_rvalue *rvalue__size_t_0 =
>     gcc_jit_context_new_rvalue_from_int (ctxt_0x6dbd370, /*
> gcc_jit_context *ctxt */
>                                          type_size_t, /* gcc_jit_type
> *numeric_type */
>                                          0); /* int value */
>   gcc_jit_lvalue *lvalue_labels__size_t_0_ =
>     gcc_jit_context_new_array_access (ctxt_0x6dbd370, /* gcc_jit_context
> *ctxt */
>                                       NULL, /*gcc_jit_location *loc */
>                                       gcc_jit_lvalue_as_rvalue
> (block_labels), /* gcc_jit_rvalue *ptr */
>                                       rvalue__size_t_0); /* gcc_jit_rvalue
> *index */
>   gcc_jit_rvalue *address_of__labels__size_t_0_ =
>     gcc_jit_lvalue_get_address (lvalue_labels__size_t_0_, /*
> gcc_jit_lvalue *lvalue */
>                                 NULL); /* gcc_jit_location *loc */
>   gcc_jit_param *param_thd_0x6dbec70 =
>     gcc_jit_context_new_param (ctxt_0x6dbd370,
>                                NULL, /* gcc_jit_location *loc */
>                                type_struct_yyy_thread__, /*gcc_jit_type
> *type */
>                                "thd"); /* const char *name */
>   gcc_jit_param *params_for_func_yyy_get_entry[1] = {
>     param_thd_0x6dbec70,
>   };
>   gcc_jit_function *func_yyy_get_entry =
>     gcc_jit_context_new_function (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
> */
>                                   NULL, /* gcc_jit_location *loc */
>                                   GCC_JIT_FUNCTION_EXPORTED, /* enum
> gcc_jit_function_kind kind */
>                                   type_struct_yyy_label__, /* gcc_jit_type
> *return_type */
>                                   "yyy_get_entry", /* const char *name */
>                                   1, /* int num_params */
>                                   params_for_func_yyy_get_entry, /*
> gcc_jit_param **params */
>                                   0); /* int is_variadic */
>   gcc_jit_param *param_thd_0x6dbf100 =
>     gcc_jit_context_new_param (ctxt_0x6dbd370,
>                                NULL, /* gcc_jit_location *loc */
>                                type_struct_yyy_thread__, /*gcc_jit_type
> *type */
>                                "thd"); /* const char *name */
>   gcc_jit_param *params_for_func_prog[1] = {
>     param_thd_0x6dbf100,
>   };
>   gcc_jit_function *func_prog =
>     gcc_jit_context_new_function (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
> */
>                                   NULL, /* gcc_jit_location *loc */
>                                   GCC_JIT_FUNCTION_INTERNAL, /* enum
> gcc_jit_function_kind kind */
>                                   type_void, /* gcc_jit_type *return_type
> */
>                                   "prog", /* const char *name */
>                                   1, /* int num_params */
>                                   params_for_func_prog, /* gcc_jit_param
> **params */
>                                   0); /* int is_variadic */
>   gcc_jit_block *block_initial =
>     gcc_jit_function_new_block (func_prog, "initial");
>   gcc_jit_lvalue *local_mod =
>     gcc_jit_function_new_local (func_yyy_get_entry, /* gcc_jit_function
> *func */
>                                 NULL, /* gcc_jit_location *loc */
>                                 type_struct_yyy_module__, /* gcc_jit_type
> *type */
>                                 "mod"); /* const char *name */
>   gcc_jit_block *block_initial_0x6dbf900 =
>     gcc_jit_function_new_block (func_yyy_get_entry, "initial");
>   gcc_jit_rvalue *rvalue__size_t_0_0x6dbfa00 =
>     gcc_jit_context_new_rvalue_from_long (ctxt_0x6dbd370, /*
> gcc_jit_context *ctxt */
>                                           type_size_t, /* gcc_jit_type
> *numeric_type */
>                                           0L); /* long value */
>   gcc_jit_rvalue
> *args_for__call_yyy_make_module__thd____labels__size_t_0_____size_t_0_[3] =
> {
>     gcc_jit_param_as_rvalue (param_thd_0x6dbec70),
>     address_of__labels__size_t_0_,
>     rvalue__size_t_0_0x6dbfa00,
>   };
>   gcc_jit_rvalue
> *call_yyy_make_module__thd____labels__size_t_0_____size_t_0_ =
>     gcc_jit_context_new_call (ctxt_0x6dbd370, /* gcc_jit_context *ctxt */
>                               NULL, /* gcc_jit_location *loc */
>                               func_yyy_make_module, /* gcc_jit_function
> *func */
>                               3, /* int numargs  */
>
> args_for__call_yyy_make_module__thd____labels__size_t_0_____size_t_0_); /*
> gcc_jit_rvalue **args*/
>   gcc_jit_block_add_assignment (block_initial_0x6dbf900, /*gcc_jit_block
> *block */
>                                 NULL, /* gcc_jit_location *loc */
>                                 local_mod, /* gcc_jit_lvalue *lvalue */
>
> call_yyy_make_module__thd____labels__size_t_0_____size_t_0_); /*
> gcc_jit_rvalue *rvalue */
>   gcc_jit_rvalue *rvalue__size_t_0_0x6dbfc90 =
>     gcc_jit_context_new_rvalue_from_long (ctxt_0x6dbd370, /*
> gcc_jit_context *ctxt */
>                                           type_size_t, /* gcc_jit_type
> *numeric_type */
>                                           0L); /* long value */
>   gcc_jit_lvalue *lvalue_labels__size_t_0__0x6dbfd20 =
>     gcc_jit_context_new_array_access (ctxt_0x6dbd370, /* gcc_jit_context
> *ctxt */
>                                       NULL, /*gcc_jit_location *loc */
>                                       gcc_jit_lvalue_as_rvalue
> (block_labels), /* gcc_jit_rvalue *ptr */
>                                       rvalue__size_t_0_0x6dbfc90); /*
> gcc_jit_rvalue *index */
>   gcc_jit_block *block__UNNAMED_BLOCK_0x6dbff20_ =
>     gcc_jit_function_new_block (func_prog, NULL);
>   gcc_jit_lvalue *lvalue_labels__size_t_0__a =
>     gcc_jit_lvalue_access_field (lvalue_labels__size_t_0__0x6dbfd20,
> /*gcc_jit_lvalue *struct_or_union */
>                                  NULL, /*gcc_jit_location *loc */
>                                  field_a);
>   gcc_jit_lvalue *lvalue_labels__size_t_0__a_y =
>     gcc_jit_lvalue_access_field (lvalue_labels__size_t_0__a,
> /*gcc_jit_lvalue *struct_or_union */
>                                  NULL, /*gcc_jit_location *loc */
>                                  field_y);
>   gcc_jit_lvalue *lvalue_labels__size_t_0__a_y_mod =
>     gcc_jit_lvalue_access_field (lvalue_labels__size_t_0__a_y,
> /*gcc_jit_lvalue *struct_or_union */
>                                  NULL, /*gcc_jit_location *loc */
>                                  field_mod);
>   gcc_jit_block_add_assignment (block_initial_0x6dbf900, /*gcc_jit_block
> *block */
>                                 NULL, /* gcc_jit_location *loc */
>                                 lvalue_labels__size_t_0__a_y_mod, /*
> gcc_jit_lvalue *lvalue */
>                                 gcc_jit_lvalue_as_rvalue (local_mod)); /*
> gcc_jit_rvalue *rvalue */
>   gcc_jit_type
> *params_for_function_type_void__struct_yyy_thread____0x6dc0230[1] = {
>     type_struct_yyy_thread__,
>   };
>   gcc_jit_type *ptr_to_void______struct_yyy_thread____0x6dc0320 =
>     gcc_jit_context_new_function_ptr_type (ctxt_0x6dbd370, /*
> gcc_jit_context *ctxt */
>                                            NULL, /* gcc_jit_location *loc
> */
>                                            type_void, /* gcc_jit_type
> *return_type */
>                                            1, /* int num_params */
>
>  params_for_function_type_void__struct_yyy_thread____0x6dc0230, /*
> gcc_jit_type **param_types */
>                                            0); /* int is_variadic */
>   gcc_jit_rvalue *address_of_prog =
>     gcc_jit_function_get_address (func_prog, /* gcc_jit_function *fn */
>                                   NULL); /* gcc_jit_location *loc */
>   gcc_jit_lvalue *lvalue_labels__size_t_0__a_0x6dc0420 =
>     gcc_jit_lvalue_access_field (lvalue_labels__size_t_0__0x6dbfd20,
> /*gcc_jit_lvalue *struct_or_union */
>                                  NULL, /*gcc_jit_location *loc */
>                                  field_a);
>   gcc_jit_lvalue *lvalue_labels__size_t_0__a_y_0x6dc04b0 =
>     gcc_jit_lvalue_access_field (lvalue_labels__size_t_0__a_0x6dc0420,
> /*gcc_jit_lvalue *struct_or_union */
>                                  NULL, /*gcc_jit_location *loc */
>                                  field_y);
>   gcc_jit_lvalue *lvalue_labels__size_t_0__a_y_prog =
>     gcc_jit_lvalue_access_field (lvalue_labels__size_t_0__a_y_0x6dc04b0,
> /*gcc_jit_lvalue *struct_or_union */
>                                  NULL, /*gcc_jit_location *loc */
>                                  field_prog);
>   gcc_jit_block_add_assignment (block_initial_0x6dbf900, /*gcc_jit_block
> *block */
>                                 NULL, /* gcc_jit_location *loc */
>                                 lvalue_labels__size_t_0__a_y_prog, /*
> gcc_jit_lvalue *lvalue */
>                                 address_of_prog); /* gcc_jit_rvalue
> *rvalue */
>   gcc_jit_rvalue *rvalue__size_t_0_0x6dc0850 =
>     gcc_jit_context_new_rvalue_from_long (ctxt_0x6dbd370, /*
> gcc_jit_context *ctxt */
>                                           type_size_t, /* gcc_jit_type
> *numeric_type */
>                                           0L); /* long value */
>   gcc_jit_lvalue *lvalue_labels__size_t_0__0x6dc08e0 =
>     gcc_jit_context_new_array_access (ctxt_0x6dbd370, /* gcc_jit_context
> *ctxt */
>                                       NULL, /*gcc_jit_location *loc */
>                                       gcc_jit_lvalue_as_rvalue
> (block_labels), /* gcc_jit_rvalue *ptr */
>                                       rvalue__size_t_0_0x6dc0850); /*
> gcc_jit_rvalue *index */
>   gcc_jit_rvalue *address_of__labels__size_t_0__0x6dc0970 =
>     gcc_jit_lvalue_get_address (lvalue_labels__size_t_0__0x6dc08e0, /*
> gcc_jit_lvalue *lvalue */
>                                 NULL); /* gcc_jit_location *loc */
>   gcc_jit_block_end_with_return (block_initial_0x6dbf900, /*gcc_jit_block
> *block */
>                                  NULL, /* gcc_jit_location *loc */
>                                  address_of__labels__size_t_0__0x6dc0970);
> /* gcc_jit_rvalue *rvalue */
>   gcc_jit_block *block_default =
>     gcc_jit_function_new_block (func_prog, "default");
>   gcc_jit_rvalue *rvalue__size_t_0_0x6dc0c30 =
>     gcc_jit_context_new_rvalue_from_long (ctxt_0x6dbd370, /*
> gcc_jit_context *ctxt */
>                                           type_size_t, /* gcc_jit_type
> *numeric_type */
>                                           0L); /* long value */
>   gcc_jit_case
> *case_case__size_t_0______size_t_0__goto__UNNAMED_BLOCK_0x6dbff20__ =
>     gcc_jit_context_new_case (ctxt_0x6dbd370, /*gcc_jit_context *ctxt */
>                               rvalue__size_t_0_0x6dc0c30, /*
> gcc_jit_rvalue *min_value */
>                               rvalue__size_t_0_0x6dc0c30, /*
> gcc_jit_rvalue *max_value */
>                               block__UNNAMED_BLOCK_0x6dbff20_); /*
> gcc_jit_block *dest_block */
>   gcc_jit_lvalue *lvalue_thd__ip=
>     gcc_jit_rvalue_dereference_field (gcc_jit_param_as_rvalue
> (param_thd_0x6dbf100), /* gcc_jit_rvalue *ptr */
>                                       NULL, /* gcc_jit_location *loc */
>                                       field_ip); /* gcc_jit_field *field */
>   gcc_jit_rvalue *rvalue_thd__ip____labels__size_t_0_ =
>     gcc_jit_context_new_binary_op (ctxt_0x6dbd370,
>                                    NULL, /* gcc_jit_location *loc */
>                                    GCC_JIT_BINARY_OP_MINUS, /* enum
> gcc_jit_binary_op op */
>                                    type_size_t, /* gcc_jit_type
> *result_type */
>                                    gcc_jit_lvalue_as_rvalue
> (lvalue_thd__ip), /* gcc_jit_rvalue *a */
>                                    address_of__labels__size_t_0_); /*
> gcc_jit_rvalue *b */
>   gcc_jit_case *cases_for_switch_0x6dc0ee0[1] = {
>     case_case__size_t_0______size_t_0__goto__UNNAMED_BLOCK_0x6dbff20__,
>   };
>   gcc_jit_block_end_with_switch (block_initial, /*gcc_jit_block *block */
>                                  NULL, /* gcc_jit_location *loc */
>                                  rvalue_thd__ip____labels__size_t_0_, /*
> gcc_jit_rvalue *expr */
>                                  block_default, /* gcc_jit_block
> *default_block */
>                                  1, /* int num_cases */
>                                  cases_for_switch_0x6dc0ee0); /*
> gcc_jit_case **cases */
>   gcc_jit_block_end_with_void_return (block_default, /*gcc_jit_block
> *block */
>                                       NULL); /* gcc_jit_location *loc */
>   gcc_jit_param *param_code =
>     gcc_jit_context_new_param (ctxt_0x6dbd370,
>                                NULL, /* gcc_jit_location *loc */
>                                type_int, /*gcc_jit_type *type */
>                                "code"); /* const char *name */
>   gcc_jit_param *params_for_func_exit[1] = {
>     param_code,
>   };
>   gcc_jit_function *func_exit =
>     gcc_jit_context_new_function (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
> */
>                                   NULL, /* gcc_jit_location *loc */
>                                   GCC_JIT_FUNCTION_IMPORTED, /* enum
> gcc_jit_function_kind kind */
>                                   type_void, /* gcc_jit_type *return_type
> */
>                                   "exit", /* const char *name */
>                                   1, /* int num_params */
>                                   params_for_func_exit, /* gcc_jit_param
> **params */
>                                   0); /* int is_variadic */
>   gcc_jit_rvalue *rvalue__int_0 =
>     gcc_jit_context_new_rvalue_from_int (ctxt_0x6dbd370, /*
> gcc_jit_context *ctxt */
>                                          type_int, /* gcc_jit_type
> *numeric_type */
>                                          0); /* int value */
>   gcc_jit_rvalue *args_for__call_exit___int_0_[1] = {
>     rvalue__int_0,
>   };
>   gcc_jit_rvalue *call_exit___int_0_ =
>     gcc_jit_context_new_call (ctxt_0x6dbd370, /* gcc_jit_context *ctxt */
>                               NULL, /* gcc_jit_location *loc */
>                               func_exit, /* gcc_jit_function *func */
>                               1, /* int numargs  */
>                               args_for__call_exit___int_0_); /*
> gcc_jit_rvalue **args*/
>   gcc_jit_block_add_eval (block__UNNAMED_BLOCK_0x6dbff20_, /*gcc_jit_block
> *block */
>                           NULL, /* gcc_jit_location *loc */
>                           call_exit___int_0_); /* gcc_jit_rvalue *rvalue */
>   gcc_jit_block_end_with_void_return (block__UNNAMED_BLOCK_0x6dbff20_,
> /*gcc_jit_block *block */
>                                       NULL); /* gcc_jit_location *loc */
>   gcc_jit_location *loc__tmp_dump_c_0_0 =
>     gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
> */
>     "/tmp/dump.c", /* const char *filename */
>     0, /* int line */
>     0);/* int column */
>   gcc_jit_location *loc__tmp_dump_c_3_0 =
>     gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
> */
>     "/tmp/dump.c", /* const char *filename */
>     3, /* int line */
>     0);/* int column */
>   gcc_jit_location *loc__tmp_dump_c_5_0 =
>     gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
> */
>     "/tmp/dump.c", /* const char *filename */
>     5, /* int line */
>     0);/* int column */
>   gcc_jit_location *loc__tmp_dump_c_9_0 =
>     gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
> */
>     "/tmp/dump.c", /* const char *filename */
>     9, /* int line */
>     0);/* int column */
>   gcc_jit_location *loc__tmp_dump_c_10_0 =
>     gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
> */
>     "/tmp/dump.c", /* const char *filename */
>     10, /* int line */
>     0);/* int column */
>   gcc_jit_location *loc__tmp_dump_c_11_0 =
>     gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
> */
>     "/tmp/dump.c", /* const char *filename */
>     11, /* int line */
>     0);/* int column */
>   gcc_jit_location *loc__tmp_dump_c_12_0 =
>     gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
> */
>     "/tmp/dump.c", /* const char *filename */
>     12, /* int line */
>     0);/* int column */
>   gcc_jit_location *loc__tmp_dump_c_15_0 =
>     gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
> */
>     "/tmp/dump.c", /* const char *filename */
>     15, /* int line */
>     0);/* int column */
>   gcc_jit_location *loc__tmp_dump_c_19_0 =
>     gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
> */
>     "/tmp/dump.c", /* const char *filename */
>     19, /* int line */
>     0);/* int column */
>   gcc_jit_location *loc__tmp_dump_c_22_0 =
>     gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
> */
>     "/tmp/dump.c", /* const char *filename */
>     22, /* int line */
>     0);/* int column */
>   gcc_jit_location *loc__tmp_dump_c_23_0 =
>     gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
> */
>     "/tmp/dump.c", /* const char *filename */
>     23, /* int line */
>     0);/* int column */
>   gcc_jit_location *loc__tmp_dump_c_26_0 =
>     gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
> */
>     "/tmp/dump.c", /* const char *filename */
>     26, /* int line */
>     0);/* int column */
>   gcc_jit_location *loc__tmp_dump_c_29_0 =
>     gcc_jit_context_new_location (ctxt_0x6dbd370, /* gcc_jit_context *ctxt
> */
>     "/tmp/dump.c", /* const char *filename */
>     29, /* int line */
>     0);/* int column */
> }
>
> ++++
>
> dummy.c:
>
> #include <stddef.h>
>
> void *yyy_make_module (void *thd, void *labels, size_t glob_count)
> {
>   return NULL;
> }
>

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Memory leaks (detected by Valgrind)
  2021-12-16 22:00 ` Marc Nieper-Wißkirchen
@ 2021-12-16 22:26   ` Mark Wielaard
  2021-12-17 10:29     ` Marc Nieper-Wißkirchen
  0 siblings, 1 reply; 16+ messages in thread
From: Mark Wielaard @ 2021-12-16 22:26 UTC (permalink / raw)
  To: Marc Nieper-Wißkirchen; +Cc: jit

On Thu, Dec 16, 2021 at 11:00:24PM +0100, Marc Nieper-Wißkirchen via Jit wrote:
> Here is the Valgrind output for a debug GCC build:

You have to build gcc with:

configure --enable-valgrind-annotations

    Mark selected memory related operations in the compiler when run
    under valgrind to suppress false positives.

Cheers,

Mark


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Memory leaks (detected by Valgrind)
  2021-12-16 22:26   ` Mark Wielaard
@ 2021-12-17 10:29     ` Marc Nieper-Wißkirchen
  2021-12-17 10:52       ` Alex Coplan
  0 siblings, 1 reply; 16+ messages in thread
From: Marc Nieper-Wißkirchen @ 2021-12-17 10:29 UTC (permalink / raw)
  To: Mark Wielaard; +Cc: Marc Nieper-Wißkirchen, jit

Thanks!

With `--enable-valgrind-annotations`, the "uses of uninitialized values"
have gone away, but a lot of small leaks are still present:

==470150== Memcheck, a memory error detector
==470150== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==470150== Using Valgrind-3.17.0 and LibVEX; rerun with -h for copyright
info
==470150== Command: ./a.out
==470150==
==470150==
==470150== HEAP SUMMARY:
==470150==     in use at exit: 1,485,998 bytes in 1,172 blocks
==470150==   total heap usage: 5,358 allocs, 4,186 frees, 2,898,194 bytes
allocated
==470150==
==470150== 9 bytes in 1 blocks are definitely lost in loss record 6 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x4B9536C: set_multilib_dir (gcc.c:9850)
==470150==    by 0x4B9536C: driver::set_up_specs() const (gcc.c:8546)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
==470150==    by 0x40241F: main (in /tmp/a.out)
==470150==
==470150== 12 bytes in 1 blocks are definitely lost in loss record 7 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DDDE03: make_relative_prefix_1
(make-relative-prefix.c:377)
==470150==    by 0x4B8BCAA: process_command(unsigned int,
cl_decoded_option*) (gcc.c:4731)
==470150==    by 0x4B944F2: driver::set_up_specs() const (gcc.c:8320)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
==470150==
==470150== 16 bytes in 1 blocks are definitely lost in loss record 12 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DDDE03: make_relative_prefix_1
(make-relative-prefix.c:377)
==470150==    by 0x4B8BCC8: process_command(unsigned int,
cl_decoded_option*) (gcc.c:4734)
==470150==    by 0x4B944F2: driver::set_up_specs() const (gcc.c:8320)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
==470150==
==470150== 16 bytes in 1 blocks are definitely lost in loss record 13 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x4B8547F: save_switch(char const*, unsigned long, char
const* const*, bool, bool) (gcc.c:3906)
==470150==    by 0x4B89EA9: driver_handle_option(gcc_options*,
gcc_options*, cl_decoded_option const*, unsigned int, int, unsigned int,
cl_option_handlers const*, diagnostic_context*, void (*)()) (gcc.c:4568)
==470150==    by 0x5D617CE: handle_option(gcc_options*, gcc_options*,
cl_decoded_option const*, unsigned int, int, unsigned int,
cl_option_handlers const*, bool, diagnostic_context*) (opts-common.c:1181)
==470150==    by 0x5D6195C: read_cmdline_option(gcc_options*, gcc_options*,
cl_decoded_option*, unsigned int, unsigned int, cl_option_handlers const*,
diagnostic_context*) (opts-common.c:1431)
==470150==    by 0x4B8B41A: process_command(unsigned int,
cl_decoded_option*) (gcc.c:4927)
==470150==    by 0x4B944F2: driver::set_up_specs() const (gcc.c:8320)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==
==470150== 16 bytes in 1 blocks are definitely lost in loss record 14 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x4B94C0A: set_multilib_dir (gcc.c:9650)
==470150==    by 0x4B94C0A: driver::set_up_specs() const (gcc.c:8546)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
==470150==    by 0x40241F: main (in /tmp/a.out)
==470150==
==470150== 16 bytes in 1 blocks are definitely lost in loss record 15 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x4B8C8B9: record_temp_file(char const*, int, int)
(gcc.c:2679)
==470150==    by 0x4B8CD3B: end_going_arg() [clone .part.0] (gcc.c:5649)
==470150==    by 0x4B8D116: end_going_arg (gcc.c:5628)
==470150==    by 0x4B8D116: do_spec_1(char const*, int, char const*)
(gcc.c:6061)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==
==470150== 17 bytes in 1 blocks are definitely lost in loss record 16 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x4B953A7: set_multilib_dir (gcc.c:9858)
==470150==    by 0x4B953A7: driver::set_up_specs() const (gcc.c:8546)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
==470150==    by 0x40241F: main (in /tmp/a.out)
==470150==
==470150== 18 bytes in 1 blocks are definitely lost in loss record 17 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DD6961: concat (concat.c:147)
==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char const*,
int, bool) (gcc.c:3072)
==470150==    by 0x4B918A9: find_a_program (gcc.c:3100)
==470150==    by 0x4B918A9: maybe_putenv_COLLECT_LTO_WRAPPER (gcc.c:8572)
==470150==    by 0x4B918A9: driver::maybe_putenv_COLLECT_LTO_WRAPPER()
const (gcc.c:8565)
==470150==    by 0x4B48616: driver::main(int, char**) (gcc.c:8131)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==
==470150== 18 bytes in 1 blocks are definitely lost in loss record 18 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DD6961: concat (concat.c:147)
==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char const*,
int, bool) (gcc.c:3072)
==470150==    by 0x4B8856D: find_a_program (gcc.c:3100)
==470150==    by 0x4B8856D: execute() (gcc.c:3283)
==470150==    by 0x4B9313C: driver::do_spec_on_infiles() const (gcc.c:8920)
==470150==    by 0x4B4884E: driver::main(int, char**) (gcc.c:8148)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==
==470150== 18 bytes in 1 blocks are definitely lost in loss record 19 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DD6961: concat (concat.c:147)
==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char const*,
int, bool) (gcc.c:3072)
==470150==    by 0x4B93E5B: find_a_program (gcc.c:3100)
==470150==    by 0x4B93E5B: driver::maybe_run_linker(char const*) const
(gcc.c:9085)
==470150==    by 0x4B4885D: driver::main(int, char**) (gcc.c:8149)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==
==470150== 18 bytes in 1 blocks are definitely lost in loss record 20 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DD6961: concat (concat.c:147)
==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
==470150==    by 0x4B849EB: build_search_list(path_prefix const*, char
const*, bool, bool) (gcc.c:2974)
==470150==    by 0x4B93DC5: putenv_from_prefixes (gcc.c:2987)
==470150==    by 0x4B93DC5: driver::maybe_run_linker(char const*) const
(gcc.c:9116)
==470150==    by 0x4B4885D: driver::main(int, char**) (gcc.c:8149)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==
==470150== 18 bytes in 1 blocks are definitely lost in loss record 21 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DD6961: concat (concat.c:147)
==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
==470150==    by 0x4B849EB: build_search_list(path_prefix const*, char
const*, bool, bool) (gcc.c:2974)
==470150==    by 0x4B93DF1: putenv_from_prefixes (gcc.c:2987)
==470150==    by 0x4B93DF1: driver::maybe_run_linker(char const*) const
(gcc.c:9117)
==470150==    by 0x4B4885D: driver::main(int, char**) (gcc.c:8149)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==
==470150== 18 bytes in 1 blocks are definitely lost in loss record 22 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DD6961: concat (concat.c:147)
==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
==470150==    by 0x4B8E5F2: do_spec_1(char const*, int, char const*)
(gcc.c:6132)
==470150==    by 0x4B8E30B: do_spec_1(char const*, int, char const*)
(gcc.c:6791)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==
==470150== 18 bytes in 1 blocks are definitely lost in loss record 23 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DD6961: concat (concat.c:147)
==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char const*,
int, bool) (gcc.c:3072)
==470150==    by 0x4B8CD88: find_file (gcc.c:7898)
==470150==    by 0x4B8CD88: end_going_arg() [clone .part.0] (gcc.c:5635)
==470150==    by 0x4B8D116: end_going_arg (gcc.c:5628)
==470150==    by 0x4B8D116: do_spec_1(char const*, int, char const*)
(gcc.c:6061)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B8E60E: do_spec_1(char const*, int, char const*)
(gcc.c:6623)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==
==470150== 18 bytes in 1 blocks are definitely lost in loss record 24 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DD6961: concat (concat.c:147)
==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char const*,
int, bool) (gcc.c:3072)
==470150==    by 0x4B8CD88: find_file (gcc.c:7898)
==470150==    by 0x4B8CD88: end_going_arg() [clone .part.0] (gcc.c:5635)
==470150==    by 0x4B8D116: end_going_arg (gcc.c:5628)
==470150==    by 0x4B8D116: do_spec_1(char const*, int, char const*)
(gcc.c:6061)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==
==470150== 18 bytes in 1 blocks are definitely lost in loss record 25 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DD6961: concat (concat.c:147)
==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char const*,
int, bool) (gcc.c:3072)
==470150==    by 0x4B8856D: find_a_program (gcc.c:3100)
==470150==    by 0x4B8856D: execute() (gcc.c:3283)
==470150==    by 0x4B8D3E4: do_spec_1(char const*, int, char const*)
(gcc.c:6037)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==
==470150== 21 bytes in 1 blocks are definitely lost in loss record 26 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DD6961: concat (concat.c:147)
==470150==    by 0x4B9458E: driver::set_up_specs() const (gcc.c:8333)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
==470150==
==470150== 28 bytes in 1 blocks are definitely lost in loss record 31 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DD6961: concat (concat.c:147)
==470150==    by 0x4B8BCEF: process_command(unsigned int,
cl_decoded_option*) (gcc.c:4738)
==470150==    by 0x4B944F2: driver::set_up_specs() const (gcc.c:8320)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==
==470150== 28 bytes in 1 blocks are definitely lost in loss record 32 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DD6961: concat (concat.c:147)
==470150==    by 0x4B94570: driver::set_up_specs() const (gcc.c:8331)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
==470150==
==470150== 31 bytes in 1 blocks are definitely lost in loss record 34 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DE3A5E: xstrdup (xstrdup.c:34)
==470150==    by 0x4B8B026: process_command(unsigned int,
cl_decoded_option*) (gcc.c:4696)
==470150==    by 0x4B944F2: driver::set_up_specs() const (gcc.c:8320)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==
==470150== 32 (16 direct, 16 indirect) bytes in 1 blocks are definitely
lost in loss record 35 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x4B8C881: record_temp_file(char const*, int, int)
(gcc.c:2661)
==470150==    by 0x4B8CD3B: end_going_arg() [clone .part.0] (gcc.c:5649)
==470150==    by 0x4B8D116: end_going_arg (gcc.c:5628)
==470150==    by 0x4B8D116: do_spec_1(char const*, int, char const*)
(gcc.c:6061)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==
==470150== 34 bytes in 1 blocks are definitely lost in loss record 36 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x4B4BC29: init_asm_output (toplev.c:701)
==470150==    by 0x4B4BC29: lang_dependent_init (toplev.c:1852)
==470150==    by 0x4B4BC29: do_compile (toplev.c:2141)
==470150==    by 0x4B4BC29: toplev::main(int, char**) (toplev.c:2308)
==470150==    by 0x4B76AEE: gcc::jit::playback::context::compile()
(jit-playback.c:2117)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
==470150==    by 0x40241F: main (in /tmp/a.out)
==470150==
==470150== 36 bytes in 2 blocks are definitely lost in loss record 37 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DD6961: concat (concat.c:147)
==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char const*,
int, bool) (gcc.c:3072)
==470150==    by 0x4B8CD88: find_file (gcc.c:7898)
==470150==    by 0x4B8CD88: end_going_arg() [clone .part.0] (gcc.c:5635)
==470150==    by 0x4B8D116: end_going_arg (gcc.c:5628)
==470150==    by 0x4B8D116: do_spec_1(char const*, int, char const*)
(gcc.c:6061)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B8DB23: do_spec_1(char const*, int, char const*)
(gcc.c:6668)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==
==470150== 39 bytes in 1 blocks are definitely lost in loss record 38 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DD6961: concat (concat.c:147)
==470150==    by 0x4B94ACF: driver::set_up_specs() const (gcc.c:8535)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
==470150==
==470150== 40 bytes in 1 blocks are definitely lost in loss record 50 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE39CF: xrealloc (xmalloc.c:179)
==470150==    by 0x4B8CC0E: reserve<char const*> (vec.h:290)
==470150==    by 0x4B8CC0E: reserve (vec.h:1858)
==470150==    by 0x4B8CC0E: safe_push (vec.h:1967)
==470150==    by 0x4B8CC0E: store_arg(char const*, int, int) (gcc.c:2181)
==470150==    by 0x4B8CD3B: end_going_arg() [clone .part.0] (gcc.c:5649)
==470150==    by 0x4B8F38A: end_going_arg (gcc.c:5628)
==470150==    by 0x4B8F38A: do_spec_2(char const*, char const*) (gcc.c:5744)
==470150==    by 0x4B9097C: do_self_spec(char const*) (gcc.c:5806)
==470150==    by 0x4B90D9B: do_option_spec(char const*, char const*)
(gcc.c:5795)
==470150==    by 0x4B95E6F: driver_get_configure_time_options(void (*)(char
const*, void*), void*) (gcc.c:11258)
==470150==    by 0x4B7580A:
gcc::jit::playback::context::make_fake_args(vec<char*, va_heap, vl_ptr>*,
char const*, vec<gcc::jit::recording::requested_dump, va_heap, vl_ptr>*)
(jit-playback.c:2562)
==470150==    by 0x4B7680B: gcc::jit::playback::context::compile()
(jit-playback.c:2103)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
==470150==
==470150== 48 bytes in 1 blocks are definitely lost in loss record 54 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DD6961: concat (concat.c:147)
==470150==    by 0x4B948EC: driver::set_up_specs() const (gcc.c:8453)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
==470150==
==470150== 59 (40 direct, 19 indirect) bytes in 1 blocks are definitely
lost in loss record 102 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x4B8E8A9: do_spec_1(char const*, int, char const*)
(gcc.c:6354)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B8E30B: do_spec_1(char const*, int, char const*)
(gcc.c:6791)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==
==470150== 74 bytes in 1 blocks are definitely lost in loss record 116 of
213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x4B848A4: for_each_path(path_prefix const*, bool,
unsigned long, void* (*)(char*, void*), void*) (gcc.c:2813)
==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char const*,
int, bool) (gcc.c:3072)
==470150==    by 0x4B945B2: driver::set_up_specs() const (gcc.c:8335)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==
==470150== 75 bytes in 1 blocks are definitely lost in loss record 118 of
213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DD6961: concat (concat.c:147)
==470150==    by 0x4B8B7C7: process_command(unsigned int,
cl_decoded_option*) (gcc.c:5410)
==470150==    by 0x4B944F2: driver::set_up_specs() const (gcc.c:8320)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==
==470150== 75 bytes in 1 blocks are definitely lost in loss record 119 of
213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DD6961: concat (concat.c:147)
==470150==    by 0x4B8B802: process_command(unsigned int,
cl_decoded_option*) (gcc.c:5413)
==470150==    by 0x4B944F2: driver::set_up_specs() const (gcc.c:8320)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==
==470150== 88 bytes in 1 blocks are definitely lost in loss record 128 of
213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE39CF: xrealloc (xmalloc.c:179)
==470150==    by 0x4B91177: reserve<char const*> (vec.h:290)
==470150==    by 0x4B91177: reserve (vec.h:1858)
==470150==    by 0x4B91177: reserve_exact (vec.h:1878)
==470150==    by 0x4B91177: create (vec.h:1893)
==470150==    by 0x4B91177: alloc_args (gcc.c:2156)
==470150==    by 0x4B91177: driver::global_initializations() (gcc.c:8242)
==470150==    by 0x4B485DC: driver::main(int, char**) (gcc.c:8126)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
==470150==    by 0x40241F: main (in /tmp/a.out)
==470150==
==470150== 88 bytes in 1 blocks are definitely lost in loss record 129 of
213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE39CF: xrealloc (xmalloc.c:179)
==470150==    by 0x4B8F8EB: reserve<char const*> (vec.h:290)
==470150==    by 0x4B8F8EB: reserve (vec.h:1858)
==470150==    by 0x4B8F8EB: reserve_exact (vec.h:1878)
==470150==    by 0x4B8F8EB: create (vec.h:1893)
==470150==    by 0x4B8F8EB: alloc_args (gcc.c:2156)
==470150==    by 0x4B8F8EB: eval_spec_function (gcc.c:6905)
==470150==    by 0x4B8F8EB: handle_spec_function(char const*, bool*, char
const*) (gcc.c:6994)
==470150==    by 0x4B8FE92: handle_braces(char const*) (gcc.c:7148)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B8F378: do_spec_2(char const*, char const*) (gcc.c:5742)
==470150==    by 0x4B9097C: do_self_spec(char const*) (gcc.c:5806)
==470150==    by 0x4B9470B: driver::set_up_specs() const (gcc.c:8368)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==
==470150== 88 bytes in 1 blocks are definitely lost in loss record 130 of
213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE39CF: xrealloc (xmalloc.c:179)
==470150==    by 0x4B8F8EB: reserve<char const*> (vec.h:290)
==470150==    by 0x4B8F8EB: reserve (vec.h:1858)
==470150==    by 0x4B8F8EB: reserve_exact (vec.h:1878)
==470150==    by 0x4B8F8EB: create (vec.h:1893)
==470150==    by 0x4B8F8EB: alloc_args (gcc.c:2156)
==470150==    by 0x4B8F8EB: eval_spec_function (gcc.c:6905)
==470150==    by 0x4B8F8EB: handle_spec_function(char const*, bool*, char
const*) (gcc.c:6994)
==470150==    by 0x4B8FE92: handle_braces(char const*) (gcc.c:7148)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B8E30B: do_spec_1(char const*, int, char const*)
(gcc.c:6791)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==
==470150== 88 bytes in 1 blocks are definitely lost in loss record 131 of
213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE39CF: xrealloc (xmalloc.c:179)
==470150==    by 0x4B8F8EB: reserve<char const*> (vec.h:290)
==470150==    by 0x4B8F8EB: reserve (vec.h:1858)
==470150==    by 0x4B8F8EB: reserve_exact (vec.h:1878)
==470150==    by 0x4B8F8EB: create (vec.h:1893)
==470150==    by 0x4B8F8EB: alloc_args (gcc.c:2156)
==470150==    by 0x4B8F8EB: eval_spec_function (gcc.c:6905)
==470150==    by 0x4B8F8EB: handle_spec_function(char const*, bool*, char
const*) (gcc.c:6994)
==470150==    by 0x4B8FE92: handle_braces(char const*) (gcc.c:7148)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B8E30B: do_spec_1(char const*, int, char const*)
(gcc.c:6791)
==470150==    by 0x4B8E30B: do_spec_1(char const*, int, char const*)
(gcc.c:6791)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==
==470150== 211 bytes in 1 blocks are definitely lost in loss record 146 of
213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x5DE3A5E: xstrdup (xstrdup.c:34)
==470150==    by 0x4B8413B: set_spec(char const*, char const*, bool)
(gcc.c:2089)
==470150==    by 0x4B87379: read_specs(char const*, bool, bool) (gcc.c:2581)
==470150==    by 0x4B949A0: driver::set_up_specs() const (gcc.c:8338)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==
==470150== 646 bytes in 47 blocks are definitely lost in loss record 166 of
213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x4B86F12: save_string (gcc.c:9301)
==470150==    by 0x4B86F12: read_specs(char const*, bool, bool) (gcc.c:2542)
==470150==    by 0x4B949A0: driver::set_up_specs() const (gcc.c:8338)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
==470150==
==470150== 792 bytes in 9 blocks are definitely lost in loss record 167 of
213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE39CF: xrealloc (xmalloc.c:179)
==470150==    by 0x4B8F8EB: reserve<char const*> (vec.h:290)
==470150==    by 0x4B8F8EB: reserve (vec.h:1858)
==470150==    by 0x4B8F8EB: reserve_exact (vec.h:1878)
==470150==    by 0x4B8F8EB: create (vec.h:1893)
==470150==    by 0x4B8F8EB: alloc_args (gcc.c:2156)
==470150==    by 0x4B8F8EB: eval_spec_function (gcc.c:6905)
==470150==    by 0x4B8F8EB: handle_spec_function(char const*, bool*, char
const*) (gcc.c:6994)
==470150==    by 0x4B8FE92: handle_braces(char const*) (gcc.c:7148)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
(gcc.c:6676)
==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
==470150==
==470150== 2,842 bytes in 1 blocks are definitely lost in loss record 185
of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
==470150==    by 0x4B86F94: save_string (gcc.c:9301)
==470150==    by 0x4B86F94: read_specs(char const*, bool, bool) (gcc.c:2556)
==470150==    by 0x4B949A0: driver::set_up_specs() const (gcc.c:8338)
==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
==470150==    by 0x4B74A57:
gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
vl_ptr> const*) (jit-playback.c:2785)
==470150==    by 0x4B77212: gcc::jit::playback::context::invoke_driver(char
const*, char const*, char const*, timevar_id_t, bool, bool)
(jit-playback.c:2773)
==470150==    by 0x4B783AA:
gcc::jit::playback::context::convert_to_dso(char const*)
(jit-playback.c:2694)
==470150==    by 0x4B78409:
gcc::jit::playback::compile_to_memory::postprocess(char const*)
(jit-playback.c:2176)
==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
(jit-playback.c:2149)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
==470150==
==470150== 12,611 (48 direct, 12,563 indirect) bytes in 1 blocks are
definitely lost in loss record 191 of 213
==470150==    at 0x4842839: malloc (in
/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==470150==    by 0x5DF20A8: operator new(unsigned long) (in
/home/mnieper/gcc/install/lib/libgccjit.so.0.0.1)
==470150==    by 0x4F62B89:
gcc::pass_manager::register_pass_name(opt_pass*, char const*) (passes.c:906)
==470150==    by 0x4F62D98:
gcc::pass_manager::register_one_dump_file(opt_pass*) (passes.c:878)
==470150==    by 0x4F62E88:
gcc::pass_manager::register_dump_files(opt_pass*) (passes.c:890)
==470150==    by 0x4F698CD: gcc::pass_manager::pass_manager(gcc::context*)
(passes.c:1642)
==470150==    by 0x4B4A20F: general_init (toplev.c:1107)
==470150==    by 0x4B4A20F: toplev::main(int, char**) (toplev.c:2240)
==470150==    by 0x4B76AEE: gcc::jit::playback::context::compile()
(jit-playback.c:2117)
==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
(jit-recording.c:1397)
==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
==470150==    by 0x40241F: main (in /tmp/a.out)
==470150==
==470150== LEAK SUMMARY:
==470150==    definitely lost: 5,740 bytes in 94 blocks
==470150==    indirectly lost: 12,598 bytes in 334 blocks
==470150==      possibly lost: 0 bytes in 0 blocks
==470150==    still reachable: 1,467,660 bytes in 744 blocks
==470150==         suppressed: 0 bytes in 0 blocks
==470150== Reachable blocks (those to which a pointer was found) are not
shown.
==470150== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==470150==
==470150== For lists of detected and suppressed errors, rerun with: -s
==470150== ERROR SUMMARY: 39 errors from 39 contexts (suppressed: 0 from 0)

Am Do., 16. Dez. 2021 um 23:26 Uhr schrieb Mark Wielaard <mark@klomp.org>:

> On Thu, Dec 16, 2021 at 11:00:24PM +0100, Marc Nieper-Wißkirchen via Jit
> wrote:
> > Here is the Valgrind output for a debug GCC build:
>
> You have to build gcc with:
>
> configure --enable-valgrind-annotations
>
>     Mark selected memory related operations in the compiler when run
>     under valgrind to suppress false positives.
>
> Cheers,
>
> Mark
>
>

^ permalink raw reply	[flat|nested] 16+ messages in thread

* RE: Memory leaks (detected by Valgrind)
  2021-12-17 10:29     ` Marc Nieper-Wißkirchen
@ 2021-12-17 10:52       ` Alex Coplan
  2021-12-17 14:03         ` Marc Nieper-Wißkirchen
  2021-12-17 23:22         ` David Malcolm
  0 siblings, 2 replies; 16+ messages in thread
From: Alex Coplan @ 2021-12-17 10:52 UTC (permalink / raw)
  To: Marc Nieper-Wißkirchen, Mark Wielaard; +Cc: jit

Hi,

> -----Original Message-----
> From: Jit <jit-bounces+alex.coplan=arm.com@gcc.gnu.org> On Behalf Of Marc
> Nieper-Wißkirchen via Jit
> Sent: 17 December 2021 10:29
> To: Mark Wielaard <mark@klomp.org>
> Cc: Marc Nieper-Wißkirchen <marc.nieper+gnu@gmail.com>; jit@gcc.gnu.org
> Subject: Re: Memory leaks (detected by Valgrind)
>
> Thanks!
>
> With `--enable-valgrind-annotations`, the "uses of uninitialized values"
> have gone away, but a lot of small leaks are still present:

Memory leaks with libgccjit are a known issue, see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63854

Thanks,
Alex

>
> ==470150== Memcheck, a memory error detector
> ==470150== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et
> al.
> ==470150== Using Valgrind-3.17.0 and LibVEX; rerun with -h for copyright
> info
> ==470150== Command: ./a.out
> ==470150==
> ==470150==
> ==470150== HEAP SUMMARY:
> ==470150==     in use at exit: 1,485,998 bytes in 1,172 blocks
> ==470150==   total heap usage: 5,358 allocs, 4,186 frees, 2,898,194 bytes
> allocated
> ==470150==
> ==470150== 9 bytes in 1 blocks are definitely lost in loss record 6 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x4B9536C: set_multilib_dir (gcc.c:9850)
> ==470150==    by 0x4B9536C: driver::set_up_specs() const (gcc.c:8546)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
> ==470150==    by 0x40241F: main (in /tmp/a.out)
> ==470150==
> ==470150== 12 bytes in 1 blocks are definitely lost in loss record 7 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DDDE03: make_relative_prefix_1
> (make-relative-prefix.c:377)
> ==470150==    by 0x4B8BCAA: process_command(unsigned int,
> cl_decoded_option*) (gcc.c:4731)
> ==470150==    by 0x4B944F2: driver::set_up_specs() const (gcc.c:8320)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
> ==470150==
> ==470150== 16 bytes in 1 blocks are definitely lost in loss record 12 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DDDE03: make_relative_prefix_1
> (make-relative-prefix.c:377)
> ==470150==    by 0x4B8BCC8: process_command(unsigned int,
> cl_decoded_option*) (gcc.c:4734)
> ==470150==    by 0x4B944F2: driver::set_up_specs() const (gcc.c:8320)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
> ==470150==
> ==470150== 16 bytes in 1 blocks are definitely lost in loss record 13 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x4B8547F: save_switch(char const*, unsigned long, char
> const* const*, bool, bool) (gcc.c:3906)
> ==470150==    by 0x4B89EA9: driver_handle_option(gcc_options*,
> gcc_options*, cl_decoded_option const*, unsigned int, int, unsigned int,
> cl_option_handlers const*, diagnostic_context*, void (*)()) (gcc.c:4568)
> ==470150==    by 0x5D617CE: handle_option(gcc_options*, gcc_options*,
> cl_decoded_option const*, unsigned int, int, unsigned int,
> cl_option_handlers const*, bool, diagnostic_context*) (opts-
> common.c:1181)
> ==470150==    by 0x5D6195C: read_cmdline_option(gcc_options*,
> gcc_options*,
> cl_decoded_option*, unsigned int, unsigned int, cl_option_handlers
> const*,
> diagnostic_context*) (opts-common.c:1431)
> ==470150==    by 0x4B8B41A: process_command(unsigned int,
> cl_decoded_option*) (gcc.c:4927)
> ==470150==    by 0x4B944F2: driver::set_up_specs() const (gcc.c:8320)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==
> ==470150== 16 bytes in 1 blocks are definitely lost in loss record 14 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x4B94C0A: set_multilib_dir (gcc.c:9650)
> ==470150==    by 0x4B94C0A: driver::set_up_specs() const (gcc.c:8546)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
> ==470150==    by 0x40241F: main (in /tmp/a.out)
> ==470150==
> ==470150== 16 bytes in 1 blocks are definitely lost in loss record 15 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x4B8C8B9: record_temp_file(char const*, int, int)
> (gcc.c:2679)
> ==470150==    by 0x4B8CD3B: end_going_arg() [clone .part.0] (gcc.c:5649)
> ==470150==    by 0x4B8D116: end_going_arg (gcc.c:5628)
> ==470150==    by 0x4B8D116: do_spec_1(char const*, int, char const*)
> (gcc.c:6061)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==
> ==470150== 17 bytes in 1 blocks are definitely lost in loss record 16 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x4B953A7: set_multilib_dir (gcc.c:9858)
> ==470150==    by 0x4B953A7: driver::set_up_specs() const (gcc.c:8546)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
> ==470150==    by 0x40241F: main (in /tmp/a.out)
> ==470150==
> ==470150== 18 bytes in 1 blocks are definitely lost in loss record 17 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DD6961: concat (concat.c:147)
> ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> ==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char const*,
> int, bool) (gcc.c:3072)
> ==470150==    by 0x4B918A9: find_a_program (gcc.c:3100)
> ==470150==    by 0x4B918A9: maybe_putenv_COLLECT_LTO_WRAPPER (gcc.c:8572)
> ==470150==    by 0x4B918A9: driver::maybe_putenv_COLLECT_LTO_WRAPPER()
> const (gcc.c:8565)
> ==470150==    by 0x4B48616: driver::main(int, char**) (gcc.c:8131)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==
> ==470150== 18 bytes in 1 blocks are definitely lost in loss record 18 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DD6961: concat (concat.c:147)
> ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> ==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char const*,
> int, bool) (gcc.c:3072)
> ==470150==    by 0x4B8856D: find_a_program (gcc.c:3100)
> ==470150==    by 0x4B8856D: execute() (gcc.c:3283)
> ==470150==    by 0x4B9313C: driver::do_spec_on_infiles() const
> (gcc.c:8920)
> ==470150==    by 0x4B4884E: driver::main(int, char**) (gcc.c:8148)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==
> ==470150== 18 bytes in 1 blocks are definitely lost in loss record 19 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DD6961: concat (concat.c:147)
> ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> ==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char const*,
> int, bool) (gcc.c:3072)
> ==470150==    by 0x4B93E5B: find_a_program (gcc.c:3100)
> ==470150==    by 0x4B93E5B: driver::maybe_run_linker(char const*) const
> (gcc.c:9085)
> ==470150==    by 0x4B4885D: driver::main(int, char**) (gcc.c:8149)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==
> ==470150== 18 bytes in 1 blocks are definitely lost in loss record 20 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DD6961: concat (concat.c:147)
> ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> ==470150==    by 0x4B849EB: build_search_list(path_prefix const*, char
> const*, bool, bool) (gcc.c:2974)
> ==470150==    by 0x4B93DC5: putenv_from_prefixes (gcc.c:2987)
> ==470150==    by 0x4B93DC5: driver::maybe_run_linker(char const*) const
> (gcc.c:9116)
> ==470150==    by 0x4B4885D: driver::main(int, char**) (gcc.c:8149)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==
> ==470150== 18 bytes in 1 blocks are definitely lost in loss record 21 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DD6961: concat (concat.c:147)
> ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> ==470150==    by 0x4B849EB: build_search_list(path_prefix const*, char
> const*, bool, bool) (gcc.c:2974)
> ==470150==    by 0x4B93DF1: putenv_from_prefixes (gcc.c:2987)
> ==470150==    by 0x4B93DF1: driver::maybe_run_linker(char const*) const
> (gcc.c:9117)
> ==470150==    by 0x4B4885D: driver::main(int, char**) (gcc.c:8149)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==
> ==470150== 18 bytes in 1 blocks are definitely lost in loss record 22 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DD6961: concat (concat.c:147)
> ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> ==470150==    by 0x4B8E5F2: do_spec_1(char const*, int, char const*)
> (gcc.c:6132)
> ==470150==    by 0x4B8E30B: do_spec_1(char const*, int, char const*)
> (gcc.c:6791)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==
> ==470150== 18 bytes in 1 blocks are definitely lost in loss record 23 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DD6961: concat (concat.c:147)
> ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> ==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char const*,
> int, bool) (gcc.c:3072)
> ==470150==    by 0x4B8CD88: find_file (gcc.c:7898)
> ==470150==    by 0x4B8CD88: end_going_arg() [clone .part.0] (gcc.c:5635)
> ==470150==    by 0x4B8D116: end_going_arg (gcc.c:5628)
> ==470150==    by 0x4B8D116: do_spec_1(char const*, int, char const*)
> (gcc.c:6061)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B8E60E: do_spec_1(char const*, int, char const*)
> (gcc.c:6623)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==
> ==470150== 18 bytes in 1 blocks are definitely lost in loss record 24 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DD6961: concat (concat.c:147)
> ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> ==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char const*,
> int, bool) (gcc.c:3072)
> ==470150==    by 0x4B8CD88: find_file (gcc.c:7898)
> ==470150==    by 0x4B8CD88: end_going_arg() [clone .part.0] (gcc.c:5635)
> ==470150==    by 0x4B8D116: end_going_arg (gcc.c:5628)
> ==470150==    by 0x4B8D116: do_spec_1(char const*, int, char const*)
> (gcc.c:6061)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==
> ==470150== 18 bytes in 1 blocks are definitely lost in loss record 25 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DD6961: concat (concat.c:147)
> ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> ==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char const*,
> int, bool) (gcc.c:3072)
> ==470150==    by 0x4B8856D: find_a_program (gcc.c:3100)
> ==470150==    by 0x4B8856D: execute() (gcc.c:3283)
> ==470150==    by 0x4B8D3E4: do_spec_1(char const*, int, char const*)
> (gcc.c:6037)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==
> ==470150== 21 bytes in 1 blocks are definitely lost in loss record 26 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DD6961: concat (concat.c:147)
> ==470150==    by 0x4B9458E: driver::set_up_specs() const (gcc.c:8333)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
> ==470150==
> ==470150== 28 bytes in 1 blocks are definitely lost in loss record 31 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DD6961: concat (concat.c:147)
> ==470150==    by 0x4B8BCEF: process_command(unsigned int,
> cl_decoded_option*) (gcc.c:4738)
> ==470150==    by 0x4B944F2: driver::set_up_specs() const (gcc.c:8320)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==
> ==470150== 28 bytes in 1 blocks are definitely lost in loss record 32 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DD6961: concat (concat.c:147)
> ==470150==    by 0x4B94570: driver::set_up_specs() const (gcc.c:8331)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
> ==470150==
> ==470150== 31 bytes in 1 blocks are definitely lost in loss record 34 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DE3A5E: xstrdup (xstrdup.c:34)
> ==470150==    by 0x4B8B026: process_command(unsigned int,
> cl_decoded_option*) (gcc.c:4696)
> ==470150==    by 0x4B944F2: driver::set_up_specs() const (gcc.c:8320)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==
> ==470150== 32 (16 direct, 16 indirect) bytes in 1 blocks are definitely
> lost in loss record 35 of 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x4B8C881: record_temp_file(char const*, int, int)
> (gcc.c:2661)
> ==470150==    by 0x4B8CD3B: end_going_arg() [clone .part.0] (gcc.c:5649)
> ==470150==    by 0x4B8D116: end_going_arg (gcc.c:5628)
> ==470150==    by 0x4B8D116: do_spec_1(char const*, int, char const*)
> (gcc.c:6061)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==
> ==470150== 34 bytes in 1 blocks are definitely lost in loss record 36 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x4B4BC29: init_asm_output (toplev.c:701)
> ==470150==    by 0x4B4BC29: lang_dependent_init (toplev.c:1852)
> ==470150==    by 0x4B4BC29: do_compile (toplev.c:2141)
> ==470150==    by 0x4B4BC29: toplev::main(int, char**) (toplev.c:2308)
> ==470150==    by 0x4B76AEE: gcc::jit::playback::context::compile()
> (jit-playback.c:2117)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
> ==470150==    by 0x40241F: main (in /tmp/a.out)
> ==470150==
> ==470150== 36 bytes in 2 blocks are definitely lost in loss record 37 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DD6961: concat (concat.c:147)
> ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> ==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char const*,
> int, bool) (gcc.c:3072)
> ==470150==    by 0x4B8CD88: find_file (gcc.c:7898)
> ==470150==    by 0x4B8CD88: end_going_arg() [clone .part.0] (gcc.c:5635)
> ==470150==    by 0x4B8D116: end_going_arg (gcc.c:5628)
> ==470150==    by 0x4B8D116: do_spec_1(char const*, int, char const*)
> (gcc.c:6061)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B8DB23: do_spec_1(char const*, int, char const*)
> (gcc.c:6668)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==
> ==470150== 39 bytes in 1 blocks are definitely lost in loss record 38 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DD6961: concat (concat.c:147)
> ==470150==    by 0x4B94ACF: driver::set_up_specs() const (gcc.c:8535)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
> ==470150==
> ==470150== 40 bytes in 1 blocks are definitely lost in loss record 50 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE39CF: xrealloc (xmalloc.c:179)
> ==470150==    by 0x4B8CC0E: reserve<char const*> (vec.h:290)
> ==470150==    by 0x4B8CC0E: reserve (vec.h:1858)
> ==470150==    by 0x4B8CC0E: safe_push (vec.h:1967)
> ==470150==    by 0x4B8CC0E: store_arg(char const*, int, int) (gcc.c:2181)
> ==470150==    by 0x4B8CD3B: end_going_arg() [clone .part.0] (gcc.c:5649)
> ==470150==    by 0x4B8F38A: end_going_arg (gcc.c:5628)
> ==470150==    by 0x4B8F38A: do_spec_2(char const*, char const*)
> (gcc.c:5744)
> ==470150==    by 0x4B9097C: do_self_spec(char const*) (gcc.c:5806)
> ==470150==    by 0x4B90D9B: do_option_spec(char const*, char const*)
> (gcc.c:5795)
> ==470150==    by 0x4B95E6F: driver_get_configure_time_options(void
> (*)(char
> const*, void*), void*) (gcc.c:11258)
> ==470150==    by 0x4B7580A:
> gcc::jit::playback::context::make_fake_args(vec<char*, va_heap, vl_ptr>*,
> char const*, vec<gcc::jit::recording::requested_dump, va_heap, vl_ptr>*)
> (jit-playback.c:2562)
> ==470150==    by 0x4B7680B: gcc::jit::playback::context::compile()
> (jit-playback.c:2103)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
> ==470150==
> ==470150== 48 bytes in 1 blocks are definitely lost in loss record 54 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DD6961: concat (concat.c:147)
> ==470150==    by 0x4B948EC: driver::set_up_specs() const (gcc.c:8453)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
> ==470150==
> ==470150== 59 (40 direct, 19 indirect) bytes in 1 blocks are definitely
> lost in loss record 102 of 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x4B8E8A9: do_spec_1(char const*, int, char const*)
> (gcc.c:6354)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B8E30B: do_spec_1(char const*, int, char const*)
> (gcc.c:6791)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==
> ==470150== 74 bytes in 1 blocks are definitely lost in loss record 116 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x4B848A4: for_each_path(path_prefix const*, bool,
> unsigned long, void* (*)(char*, void*), void*) (gcc.c:2813)
> ==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char const*,
> int, bool) (gcc.c:3072)
> ==470150==    by 0x4B945B2: driver::set_up_specs() const (gcc.c:8335)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==
> ==470150== 75 bytes in 1 blocks are definitely lost in loss record 118 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DD6961: concat (concat.c:147)
> ==470150==    by 0x4B8B7C7: process_command(unsigned int,
> cl_decoded_option*) (gcc.c:5410)
> ==470150==    by 0x4B944F2: driver::set_up_specs() const (gcc.c:8320)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==
> ==470150== 75 bytes in 1 blocks are definitely lost in loss record 119 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DD6961: concat (concat.c:147)
> ==470150==    by 0x4B8B802: process_command(unsigned int,
> cl_decoded_option*) (gcc.c:5413)
> ==470150==    by 0x4B944F2: driver::set_up_specs() const (gcc.c:8320)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==
> ==470150== 88 bytes in 1 blocks are definitely lost in loss record 128 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE39CF: xrealloc (xmalloc.c:179)
> ==470150==    by 0x4B91177: reserve<char const*> (vec.h:290)
> ==470150==    by 0x4B91177: reserve (vec.h:1858)
> ==470150==    by 0x4B91177: reserve_exact (vec.h:1878)
> ==470150==    by 0x4B91177: create (vec.h:1893)
> ==470150==    by 0x4B91177: alloc_args (gcc.c:2156)
> ==470150==    by 0x4B91177: driver::global_initializations() (gcc.c:8242)
> ==470150==    by 0x4B485DC: driver::main(int, char**) (gcc.c:8126)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
> ==470150==    by 0x40241F: main (in /tmp/a.out)
> ==470150==
> ==470150== 88 bytes in 1 blocks are definitely lost in loss record 129 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE39CF: xrealloc (xmalloc.c:179)
> ==470150==    by 0x4B8F8EB: reserve<char const*> (vec.h:290)
> ==470150==    by 0x4B8F8EB: reserve (vec.h:1858)
> ==470150==    by 0x4B8F8EB: reserve_exact (vec.h:1878)
> ==470150==    by 0x4B8F8EB: create (vec.h:1893)
> ==470150==    by 0x4B8F8EB: alloc_args (gcc.c:2156)
> ==470150==    by 0x4B8F8EB: eval_spec_function (gcc.c:6905)
> ==470150==    by 0x4B8F8EB: handle_spec_function(char const*, bool*, char
> const*) (gcc.c:6994)
> ==470150==    by 0x4B8FE92: handle_braces(char const*) (gcc.c:7148)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B8F378: do_spec_2(char const*, char const*)
> (gcc.c:5742)
> ==470150==    by 0x4B9097C: do_self_spec(char const*) (gcc.c:5806)
> ==470150==    by 0x4B9470B: driver::set_up_specs() const (gcc.c:8368)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==
> ==470150== 88 bytes in 1 blocks are definitely lost in loss record 130 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE39CF: xrealloc (xmalloc.c:179)
> ==470150==    by 0x4B8F8EB: reserve<char const*> (vec.h:290)
> ==470150==    by 0x4B8F8EB: reserve (vec.h:1858)
> ==470150==    by 0x4B8F8EB: reserve_exact (vec.h:1878)
> ==470150==    by 0x4B8F8EB: create (vec.h:1893)
> ==470150==    by 0x4B8F8EB: alloc_args (gcc.c:2156)
> ==470150==    by 0x4B8F8EB: eval_spec_function (gcc.c:6905)
> ==470150==    by 0x4B8F8EB: handle_spec_function(char const*, bool*, char
> const*) (gcc.c:6994)
> ==470150==    by 0x4B8FE92: handle_braces(char const*) (gcc.c:7148)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B8E30B: do_spec_1(char const*, int, char const*)
> (gcc.c:6791)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==
> ==470150== 88 bytes in 1 blocks are definitely lost in loss record 131 of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE39CF: xrealloc (xmalloc.c:179)
> ==470150==    by 0x4B8F8EB: reserve<char const*> (vec.h:290)
> ==470150==    by 0x4B8F8EB: reserve (vec.h:1858)
> ==470150==    by 0x4B8F8EB: reserve_exact (vec.h:1878)
> ==470150==    by 0x4B8F8EB: create (vec.h:1893)
> ==470150==    by 0x4B8F8EB: alloc_args (gcc.c:2156)
> ==470150==    by 0x4B8F8EB: eval_spec_function (gcc.c:6905)
> ==470150==    by 0x4B8F8EB: handle_spec_function(char const*, bool*, char
> const*) (gcc.c:6994)
> ==470150==    by 0x4B8FE92: handle_braces(char const*) (gcc.c:7148)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B8E30B: do_spec_1(char const*, int, char const*)
> (gcc.c:6791)
> ==470150==    by 0x4B8E30B: do_spec_1(char const*, int, char const*)
> (gcc.c:6791)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==
> ==470150== 211 bytes in 1 blocks are definitely lost in loss record 146
> of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x5DE3A5E: xstrdup (xstrdup.c:34)
> ==470150==    by 0x4B8413B: set_spec(char const*, char const*, bool)
> (gcc.c:2089)
> ==470150==    by 0x4B87379: read_specs(char const*, bool, bool)
> (gcc.c:2581)
> ==470150==    by 0x4B949A0: driver::set_up_specs() const (gcc.c:8338)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==
> ==470150== 646 bytes in 47 blocks are definitely lost in loss record 166
> of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x4B86F12: save_string (gcc.c:9301)
> ==470150==    by 0x4B86F12: read_specs(char const*, bool, bool)
> (gcc.c:2542)
> ==470150==    by 0x4B949A0: driver::set_up_specs() const (gcc.c:8338)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
> ==470150==
> ==470150== 792 bytes in 9 blocks are definitely lost in loss record 167
> of
> 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE39CF: xrealloc (xmalloc.c:179)
> ==470150==    by 0x4B8F8EB: reserve<char const*> (vec.h:290)
> ==470150==    by 0x4B8F8EB: reserve (vec.h:1858)
> ==470150==    by 0x4B8F8EB: reserve_exact (vec.h:1878)
> ==470150==    by 0x4B8F8EB: create (vec.h:1893)
> ==470150==    by 0x4B8F8EB: alloc_args (gcc.c:2156)
> ==470150==    by 0x4B8F8EB: eval_spec_function (gcc.c:6905)
> ==470150==    by 0x4B8F8EB: handle_spec_function(char const*, bool*, char
> const*) (gcc.c:6994)
> ==470150==    by 0x4B8FE92: handle_braces(char const*) (gcc.c:7148)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char const*)
> (gcc.c:6676)
> ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> ==470150==
> ==470150== 2,842 bytes in 1 blocks are definitely lost in loss record 185
> of 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> ==470150==    by 0x4B86F94: save_string (gcc.c:9301)
> ==470150==    by 0x4B86F94: read_specs(char const*, bool, bool)
> (gcc.c:2556)
> ==470150==    by 0x4B949A0: driver::set_up_specs() const (gcc.c:8338)
> ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> ==470150==    by 0x4B74A57:
> gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap,
> vl_ptr> const*) (jit-playback.c:2785)
> ==470150==    by 0x4B77212:
> gcc::jit::playback::context::invoke_driver(char
> const*, char const*, char const*, timevar_id_t, bool, bool)
> (jit-playback.c:2773)
> ==470150==    by 0x4B783AA:
> gcc::jit::playback::context::convert_to_dso(char const*)
> (jit-playback.c:2694)
> ==470150==    by 0x4B78409:
> gcc::jit::playback::compile_to_memory::postprocess(char const*)
> (jit-playback.c:2176)
> ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> (jit-playback.c:2149)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
> ==470150==
> ==470150== 12,611 (48 direct, 12,563 indirect) bytes in 1 blocks are
> definitely lost in loss record 191 of 213
> ==470150==    at 0x4842839: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==470150==    by 0x5DF20A8: operator new(unsigned long) (in
> /home/mnieper/gcc/install/lib/libgccjit.so.0.0.1)
> ==470150==    by 0x4F62B89:
> gcc::pass_manager::register_pass_name(opt_pass*, char const*)
> (passes.c:906)
> ==470150==    by 0x4F62D98:
> gcc::pass_manager::register_one_dump_file(opt_pass*) (passes.c:878)
> ==470150==    by 0x4F62E88:
> gcc::pass_manager::register_dump_files(opt_pass*) (passes.c:890)
> ==470150==    by 0x4F698CD:
> gcc::pass_manager::pass_manager(gcc::context*)
> (passes.c:1642)
> ==470150==    by 0x4B4A20F: general_init (toplev.c:1107)
> ==470150==    by 0x4B4A20F: toplev::main(int, char**) (toplev.c:2240)
> ==470150==    by 0x4B76AEE: gcc::jit::playback::context::compile()
> (jit-playback.c:2117)
> ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> (jit-recording.c:1397)
> ==470150==    by 0x4B5C708: gcc_jit_context_compile (libgccjit.c:3091)
> ==470150==    by 0x40241F: main (in /tmp/a.out)
> ==470150==
> ==470150== LEAK SUMMARY:
> ==470150==    definitely lost: 5,740 bytes in 94 blocks
> ==470150==    indirectly lost: 12,598 bytes in 334 blocks
> ==470150==      possibly lost: 0 bytes in 0 blocks
> ==470150==    still reachable: 1,467,660 bytes in 744 blocks
> ==470150==         suppressed: 0 bytes in 0 blocks
> ==470150== Reachable blocks (those to which a pointer was found) are not
> shown.
> ==470150== To see them, rerun with: --leak-check=full --show-leak-
> kinds=all
> ==470150==
> ==470150== For lists of detected and suppressed errors, rerun with: -s
> ==470150== ERROR SUMMARY: 39 errors from 39 contexts (suppressed: 0 from
> 0)
>
> Am Do., 16. Dez. 2021 um 23:26 Uhr schrieb Mark Wielaard
> <mark@klomp.org>:
>
> > On Thu, Dec 16, 2021 at 11:00:24PM +0100, Marc Nieper-Wißkirchen via
> Jit
> > wrote:
> > > Here is the Valgrind output for a debug GCC build:
> >
> > You have to build gcc with:
> >
> > configure --enable-valgrind-annotations
> >
> >     Mark selected memory related operations in the compiler when run
> >     under valgrind to suppress false positives.
> >
> > Cheers,
> >
> > Mark
> >
> >
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Memory leaks (detected by Valgrind)
  2021-12-17 10:52       ` Alex Coplan
@ 2021-12-17 14:03         ` Marc Nieper-Wißkirchen
  2021-12-17 14:54           ` Andrea Corallo
  2021-12-17 23:22         ` David Malcolm
  1 sibling, 1 reply; 16+ messages in thread
From: Marc Nieper-Wißkirchen @ 2021-12-17 14:03 UTC (permalink / raw)
  To: Alex Coplan; +Cc: Marc Nieper-Wißkirchen, Mark Wielaard, jit

Am Fr., 17. Dez. 2021 um 11:52 Uhr schrieb Alex Coplan <Alex.Coplan@arm.com
>:

> Hi,
>
> > -----Original Message-----
> > From: Jit <jit-bounces+alex.coplan=arm.com@gcc.gnu.org> On Behalf Of
> Marc
> > Nieper-Wißkirchen via Jit
> > Sent: 17 December 2021 10:29
> > To: Mark Wielaard <mark@klomp.org>
> > Cc: Marc Nieper-Wißkirchen <marc.nieper+gnu@gmail.com>; jit@gcc.gnu.org
> > Subject: Re: Memory leaks (detected by Valgrind)
> >
> > Thanks!
> >
> > With `--enable-valgrind-annotations`, the "uses of uninitialized values"
> > have gone away, but a lot of small leaks are still present:
>
> Memory leaks with libgccjit are a known issue, see
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63854


Oh, that the bug has been open so long and is still open is unfortunate as
a process using libgccjit usually lasts a lot longer than a single compiler
run by gcc.

Thanks,

Marc

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Memory leaks (detected by Valgrind)
  2021-12-17 14:03         ` Marc Nieper-Wißkirchen
@ 2021-12-17 14:54           ` Andrea Corallo
  2021-12-17 15:11             ` Marc Nieper-Wißkirchen
  0 siblings, 1 reply; 16+ messages in thread
From: Andrea Corallo @ 2021-12-17 14:54 UTC (permalink / raw)
  To: Marc Nieper-Wißkirchen via Jit
  Cc: Alex Coplan, Marc Nieper-Wißkirchen, Mark Wielaard

Marc Nieper-Wißkirchen via Jit <jit@gcc.gnu.org> writes:

> Am Fr., 17. Dez. 2021 um 11:52 Uhr schrieb Alex Coplan <Alex.Coplan@arm.com
>>:
>
>> Hi,
>>
>> > -----Original Message-----
>> > From: Jit <jit-bounces+alex.coplan=arm.com@gcc.gnu.org> On Behalf Of
>> Marc
>> > Nieper-Wißkirchen via Jit
>> > Sent: 17 December 2021 10:29
>> > To: Mark Wielaard <mark@klomp.org>
>> > Cc: Marc Nieper-Wißkirchen <marc.nieper+gnu@gmail.com>; jit@gcc.gnu.org
>> > Subject: Re: Memory leaks (detected by Valgrind)
>> >
>> > Thanks!
>> >
>> > With `--enable-valgrind-annotations`, the "uses of uninitialized values"
>> > have gone away, but a lot of small leaks are still present:
>>
>> Memory leaks with libgccjit are a known issue, see
>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63854
>
>
> Oh, that the bug has been open so long and is still open is unfortunate as
> a process using libgccjit usually lasts a lot longer than a single compiler
> run by gcc.

That's correct, in Emacs we have to work around this running a
sub-processes for compilation tasks.

  Andrea
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Memory leaks (detected by Valgrind)
  2021-12-17 14:54           ` Andrea Corallo
@ 2021-12-17 15:11             ` Marc Nieper-Wißkirchen
  2021-12-17 16:07               ` Andrea Corallo
  0 siblings, 1 reply; 16+ messages in thread
From: Marc Nieper-Wißkirchen @ 2021-12-17 15:11 UTC (permalink / raw)
  To: Andrea Corallo
  Cc: Marc Nieper-Wißkirchen via Jit, Alex Coplan,
	Marc Nieper-Wißkirchen, Mark Wielaard

Am Fr., 17. Dez. 2021 um 15:54 Uhr schrieb Andrea Corallo <
andrea.corallo@arm.com>:

> Marc Nieper-Wißkirchen via Jit <jit@gcc.gnu.org> writes:
>
> > Am Fr., 17. Dez. 2021 um 11:52 Uhr schrieb Alex Coplan <
> Alex.Coplan@arm.com
> >>:
> >
> >> Hi,
> >>
> >> > -----Original Message-----
> >> > From: Jit <jit-bounces+alex.coplan=arm.com@gcc.gnu.org> On Behalf Of
> >> Marc
> >> > Nieper-Wißkirchen via Jit
> >> > Sent: 17 December 2021 10:29
> >> > To: Mark Wielaard <mark@klomp.org>
> >> > Cc: Marc Nieper-Wißkirchen <marc.nieper+gnu@gmail.com>;
> jit@gcc.gnu.org
> >> > Subject: Re: Memory leaks (detected by Valgrind)
> >> >
> >> > Thanks!
> >> >
> >> > With `--enable-valgrind-annotations`, the "uses of uninitialized
> values"
> >> > have gone away, but a lot of small leaks are still present:
> >>
> >> Memory leaks with libgccjit are a known issue, see
> >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63854
> >
> >
> > Oh, that the bug has been open so long and is still open is unfortunate
> as
> > a process using libgccjit usually lasts a lot longer than a single
> compiler
> > run by gcc.
>
> That's correct, in Emacs we have to work around this running a
> sub-processes for compilation tasks.
>

This weakens the usefulness of libgccjit considerably, doesn't it? If I
have to start a new process to invoke it, only a bit is won compared to
writing out C and using the C frontend of GCC through exec, no? How to you
pass back the result of the compilation from the subprocess to the original
process in Emacs?

PS How difficult is it to fix the memory leaks?

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Memory leaks (detected by Valgrind)
  2021-12-17 15:11             ` Marc Nieper-Wißkirchen
@ 2021-12-17 16:07               ` Andrea Corallo
  2021-12-17 17:53                 ` Marc Nieper-Wißkirchen
  0 siblings, 1 reply; 16+ messages in thread
From: Andrea Corallo @ 2021-12-17 16:07 UTC (permalink / raw)
  To: Marc Nieper-Wißkirchen
  Cc: Marc Nieper-Wißkirchen via Jit, Alex Coplan, Mark Wielaard

Marc Nieper-Wißkirchen <marc.nieper+gnu@gmail.com> writes:

> Am Fr., 17. Dez. 2021 um 15:54 Uhr schrieb Andrea Corallo <mailto:andrea.corallo@arm.com>:Marc Nieper-Wißkirchen via Jit <mailto:jit@gcc.gnu.org> writes:
>
>> Am Fr., 17. Dez. 2021 um 11:52 Uhr schrieb Alex Coplan <mailto:Alex.Coplan@arm.com
>>>:
>>
>>> Hi,
>>>
>>> > -----Original Message-----
>>> > From: Jit <jit-bounces+alex.coplan=mailto:arm.com@gcc.gnu.org> On Behalf Of
>>> Marc
>>> > Nieper-Wißkirchen via Jit
>>> > Sent: 17 December 2021 10:29
>>> > To: Mark Wielaard <mailto:mark@klomp.org>
>>> > Cc: Marc Nieper-Wißkirchen <mailto:marc.nieper%2Bgnu@gmail.com>; mailto:jit@gcc.gnu.org
>>> > Subject: Re: Memory leaks (detected by Valgrind)
>>> >
>>> > Thanks!
>>> >
>>> > With `--enable-valgrind-annotations`, the "uses of uninitialized values"
>>> > have gone away, but a lot of small leaks are still present:
>>>
>>> Memory leaks with libgccjit are a known issue, see
>>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63854
>>
>>
>> Oh, that the bug has been open so long and is still open is unfortunate as
>> a process using libgccjit usually lasts a lot longer than a single compiler
>> run by gcc.
>
> This weakens the usefulness of libgccjit considerably, doesn't it?

Agree, IMO it does.

> If I have to start a new process to invoke it, only a bit is won
> compared to writing out C and using the C frontend of GCC through
> exec, no?

Correct.  We leave with that also because we use subprocesses to obtain
parallelism (we have no posix thread exposure in Elisp) *and* in any
case we would not be able to backport the hypothetical fix to old
distros.

> How to you pass back the result of the compilation from the
> subprocess to the original process in Emacs?

For us it's easy as the output of the compilation is a file (we'll reuse
it in different sessions).

> PS How difficult is it to fix the memory leaks?

Good question.

  Andrea
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Memory leaks (detected by Valgrind)
  2021-12-17 16:07               ` Andrea Corallo
@ 2021-12-17 17:53                 ` Marc Nieper-Wißkirchen
  2021-12-17 18:48                   ` Andrea Corallo
  0 siblings, 1 reply; 16+ messages in thread
From: Marc Nieper-Wißkirchen @ 2021-12-17 17:53 UTC (permalink / raw)
  To: Andrea Corallo
  Cc: Marc Nieper-Wißkirchen, Marc Nieper-Wißkirchen via Jit,
	Alex Coplan, Mark Wielaard

Am Fr., 17. Dez. 2021 um 17:07 Uhr schrieb Andrea Corallo <
andrea.corallo@arm.com>:

> Marc Nieper-Wißkirchen <marc.nieper+gnu@gmail.com> writes:
>
> > Am Fr., 17. Dez. 2021 um 15:54 Uhr schrieb Andrea Corallo <mailto:
> andrea.corallo@arm.com>:Marc Nieper-Wißkirchen via Jit <mailto:
> jit@gcc.gnu.org> writes:
> >
> >> Am Fr., 17. Dez. 2021 um 11:52 Uhr schrieb Alex Coplan <mailto:
> Alex.Coplan@arm.com
> >>>:
> >>
> >>> Hi,
> >>>
> >>> > -----Original Message-----
> >>> > From: Jit <jit-bounces+alex.coplan=mailto:arm.com@gcc.gnu.org> On
> Behalf Of
> >>> Marc
> >>> > Nieper-Wißkirchen via Jit
> >>> > Sent: 17 December 2021 10:29
> >>> > To: Mark Wielaard <mailto:mark@klomp.org>
> >>> > Cc: Marc Nieper-Wißkirchen <mailto:marc.nieper%2Bgnu@gmail.com>;
> mailto:jit@gcc.gnu.org
> >>> > Subject: Re: Memory leaks (detected by Valgrind)
> >>> >
> >>> > Thanks!
> >>> >
> >>> > With `--enable-valgrind-annotations`, the "uses of uninitialized
> values"
> >>> > have gone away, but a lot of small leaks are still present:
> >>>
> >>> Memory leaks with libgccjit are a known issue, see
> >>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63854
> >>
> >>
> >> Oh, that the bug has been open so long and is still open is unfortunate
> as
> >> a process using libgccjit usually lasts a lot longer than a single
> compiler
> >> run by gcc.
> >
> > This weakens the usefulness of libgccjit considerably, doesn't it?
>
> Agree, IMO it does.
>
> > If I have to start a new process to invoke it, only a bit is won
> > compared to writing out C and using the C frontend of GCC through
> > exec, no?
>
> Correct.  We leave with that also because we use subprocesses to obtain
> parallelism (we have no posix thread exposure in Elisp) *and* in any
> case we would not be able to backport the hypothetical fix to old
> distros.
>

Speaking of parallelism: When I tried to find where the memory losses come
from, I saw a lot of global variables like `link_command_spec' in `gcc.c'.
Does it mean that compiling the context is not thread-safe? (I may have
missed that in libgccjit's documentation.)

> > How to you pass back the result of the compilation from the
> > subprocess to the original process in Emacs?
>
> For us it's easy as the output of the compilation is a file (we'll reuse
> it in different sessions).
>
> > PS How difficult is it to fix the memory leaks?
>
> Good question.
>
>   Andrea
> IMPORTANT NOTICE: The contents of this email and any attachments are
> confidential and may also be privileged. If you are not the intended
> recipient, please notify the sender immediately and do not disclose the
> contents to any other person, use it for any purpose, or store or copy the
> information in any medium. Thank you.
>

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Memory leaks (detected by Valgrind)
  2021-12-17 17:53                 ` Marc Nieper-Wißkirchen
@ 2021-12-17 18:48                   ` Andrea Corallo
  0 siblings, 0 replies; 16+ messages in thread
From: Andrea Corallo @ 2021-12-17 18:48 UTC (permalink / raw)
  To: Marc Nieper-Wißkirchen
  Cc: Marc Nieper-Wißkirchen via Jit, Alex Coplan, Mark Wielaard, nd

Marc Nieper-Wißkirchen <marc.nieper+gnu@gmail.com> writes:

> Speaking of parallelism: When I tried to find where the memory losses come from, I saw a lot of global variables like `link_command_spec' in `gcc.c'. Does it mean that compiling the context is not thread-safe? (I may have missed that in libgccjit's documentation.)

It is thread safe because in practice the compilation itself it's all
guarded by a mutex, see [1] for more details.

That's another good reason (I forgot to mention) why sub-processes are a
good option for Emacs (we run many compilations in parallel).

Best Regards

  Andrea

PS please use ascii only email on list.

[1] <https://gcc.gnu.org/onlinedocs/jit/internals/index.html#design-notes>

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Memory leaks (detected by Valgrind)
  2021-12-17 10:52       ` Alex Coplan
  2021-12-17 14:03         ` Marc Nieper-Wißkirchen
@ 2021-12-17 23:22         ` David Malcolm
  2021-12-18 13:57           ` Marc Nieper-Wißkirchen
  1 sibling, 1 reply; 16+ messages in thread
From: David Malcolm @ 2021-12-17 23:22 UTC (permalink / raw)
  To: Alex Coplan, Marc Nieper-Wißkirchen, Mark Wielaard; +Cc: jit

On Fri, 2021-12-17 at 10:52 +0000, Alex Coplan via Jit wrote:
> Hi,
> 
> > -----Original Message-----
> > From: Jit <jit-bounces+alex.coplan=arm.com@gcc.gnu.org> On Behalf
> > Of Marc
> > Nieper-Wißkirchen via Jit
> > Sent: 17 December 2021 10:29
> > To: Mark Wielaard <mark@klomp.org>
> > Cc: Marc Nieper-Wißkirchen <marc.nieper+gnu@gmail.com>; 
> > jit@gcc.gnu.org
> > Subject: Re: Memory leaks (detected by Valgrind)
> > 
> > Thanks!
> > 
> > With `--enable-valgrind-annotations`, the "uses of uninitialized
> > values"
> > have gone away, but a lot of small leaks are still present:
> 
> Memory leaks with libgccjit are a known issue, see 
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63854

FWIW, it looks like all of the remaining leaks are in gcc.c (the
"driver" code, for the "gcc" binary).   IIRC most of this relates to
long-standing code that was written with the assumption that it will
only be run once and not persist in memory, and so it tends to mix up
string literals and dynamically-allocated strings without bothering to
free them (the pointer values persist to the end of "main" when run
from gcc, but get cleared when run from libgccjit.so).

Patches to clean these up would be great.  That said, I'm not the
driver/gcc.c maintainer, so I can't formally approve them (but can post
+1 emails if they look good to me)  [1]

Dave
[1] also, I'm on vacation, so sorry in advance for any slow responses
to email.


> 
> Thanks,
> Alex
> 
> > 
> > ==470150== Memcheck, a memory error detector
> > ==470150== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward
> > et
> > al.
> > ==470150== Using Valgrind-3.17.0 and LibVEX; rerun with -h for
> > copyright
> > info
> > ==470150== Command: ./a.out
> > ==470150==
> > ==470150==
> > ==470150== HEAP SUMMARY:
> > ==470150==     in use at exit: 1,485,998 bytes in 1,172 blocks
> > ==470150==   total heap usage: 5,358 allocs, 4,186 frees, 2,898,194
> > bytes
> > allocated
> > ==470150==
> > ==470150== 9 bytes in 1 blocks are definitely lost in loss record 6
> > of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x4B9536C: set_multilib_dir (gcc.c:9850)
> > ==470150==    by 0x4B9536C: driver::set_up_specs() const
> > (gcc.c:8546)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==    by 0x4B5C708: gcc_jit_context_compile
> > (libgccjit.c:3091)
> > ==470150==    by 0x40241F: main (in /tmp/a.out)
> > ==470150==
> > ==470150== 12 bytes in 1 blocks are definitely lost in loss record
> > 7 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DDDE03: make_relative_prefix_1
> > (make-relative-prefix.c:377)
> > ==470150==    by 0x4B8BCAA: process_command(unsigned int,
> > cl_decoded_option*) (gcc.c:4731)
> > ==470150==    by 0x4B944F2: driver::set_up_specs() const
> > (gcc.c:8320)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==    by 0x4B5C708: gcc_jit_context_compile
> > (libgccjit.c:3091)
> > ==470150==
> > ==470150== 16 bytes in 1 blocks are definitely lost in loss record
> > 12 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DDDE03: make_relative_prefix_1
> > (make-relative-prefix.c:377)
> > ==470150==    by 0x4B8BCC8: process_command(unsigned int,
> > cl_decoded_option*) (gcc.c:4734)
> > ==470150==    by 0x4B944F2: driver::set_up_specs() const
> > (gcc.c:8320)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==    by 0x4B5C708: gcc_jit_context_compile
> > (libgccjit.c:3091)
> > ==470150==
> > ==470150== 16 bytes in 1 blocks are definitely lost in loss record
> > 13 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x4B8547F: save_switch(char const*, unsigned long,
> > char
> > const* const*, bool, bool) (gcc.c:3906)
> > ==470150==    by 0x4B89EA9: driver_handle_option(gcc_options*,
> > gcc_options*, cl_decoded_option const*, unsigned int, int, unsigned
> > int,
> > cl_option_handlers const*, diagnostic_context*, void (*)())
> > (gcc.c:4568)
> > ==470150==    by 0x5D617CE: handle_option(gcc_options*,
> > gcc_options*,
> > cl_decoded_option const*, unsigned int, int, unsigned int,
> > cl_option_handlers const*, bool, diagnostic_context*) (opts-
> > common.c:1181)
> > ==470150==    by 0x5D6195C: read_cmdline_option(gcc_options*,
> > gcc_options*,
> > cl_decoded_option*, unsigned int, unsigned int, cl_option_handlers
> > const*,
> > diagnostic_context*) (opts-common.c:1431)
> > ==470150==    by 0x4B8B41A: process_command(unsigned int,
> > cl_decoded_option*) (gcc.c:4927)
> > ==470150==    by 0x4B944F2: driver::set_up_specs() const
> > (gcc.c:8320)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==
> > ==470150== 16 bytes in 1 blocks are definitely lost in loss record
> > 14 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x4B94C0A: set_multilib_dir (gcc.c:9650)
> > ==470150==    by 0x4B94C0A: driver::set_up_specs() const
> > (gcc.c:8546)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==    by 0x4B5C708: gcc_jit_context_compile
> > (libgccjit.c:3091)
> > ==470150==    by 0x40241F: main (in /tmp/a.out)
> > ==470150==
> > ==470150== 16 bytes in 1 blocks are definitely lost in loss record
> > 15 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x4B8C8B9: record_temp_file(char const*, int, int)
> > (gcc.c:2679)
> > ==470150==    by 0x4B8CD3B: end_going_arg() [clone .part.0]
> > (gcc.c:5649)
> > ==470150==    by 0x4B8D116: end_going_arg (gcc.c:5628)
> > ==470150==    by 0x4B8D116: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6061)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==
> > ==470150== 17 bytes in 1 blocks are definitely lost in loss record
> > 16 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x4B953A7: set_multilib_dir (gcc.c:9858)
> > ==470150==    by 0x4B953A7: driver::set_up_specs() const
> > (gcc.c:8546)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==    by 0x4B5C708: gcc_jit_context_compile
> > (libgccjit.c:3091)
> > ==470150==    by 0x40241F: main (in /tmp/a.out)
> > ==470150==
> > ==470150== 18 bytes in 1 blocks are definitely lost in loss record
> > 17 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DD6961: concat (concat.c:147)
> > ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> > unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> > ==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char
> > const*,
> > int, bool) (gcc.c:3072)
> > ==470150==    by 0x4B918A9: find_a_program (gcc.c:3100)
> > ==470150==    by 0x4B918A9: maybe_putenv_COLLECT_LTO_WRAPPER
> > (gcc.c:8572)
> > ==470150==    by 0x4B918A9:
> > driver::maybe_putenv_COLLECT_LTO_WRAPPER()
> > const (gcc.c:8565)
> > ==470150==    by 0x4B48616: driver::main(int, char**) (gcc.c:8131)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==
> > ==470150== 18 bytes in 1 blocks are definitely lost in loss record
> > 18 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DD6961: concat (concat.c:147)
> > ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> > unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> > ==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char
> > const*,
> > int, bool) (gcc.c:3072)
> > ==470150==    by 0x4B8856D: find_a_program (gcc.c:3100)
> > ==470150==    by 0x4B8856D: execute() (gcc.c:3283)
> > ==470150==    by 0x4B9313C: driver::do_spec_on_infiles() const
> > (gcc.c:8920)
> > ==470150==    by 0x4B4884E: driver::main(int, char**) (gcc.c:8148)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==
> > ==470150== 18 bytes in 1 blocks are definitely lost in loss record
> > 19 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DD6961: concat (concat.c:147)
> > ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> > unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> > ==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char
> > const*,
> > int, bool) (gcc.c:3072)
> > ==470150==    by 0x4B93E5B: find_a_program (gcc.c:3100)
> > ==470150==    by 0x4B93E5B: driver::maybe_run_linker(char const*)
> > const
> > (gcc.c:9085)
> > ==470150==    by 0x4B4885D: driver::main(int, char**) (gcc.c:8149)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==
> > ==470150== 18 bytes in 1 blocks are definitely lost in loss record
> > 20 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DD6961: concat (concat.c:147)
> > ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> > unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> > ==470150==    by 0x4B849EB: build_search_list(path_prefix const*,
> > char
> > const*, bool, bool) (gcc.c:2974)
> > ==470150==    by 0x4B93DC5: putenv_from_prefixes (gcc.c:2987)
> > ==470150==    by 0x4B93DC5: driver::maybe_run_linker(char const*)
> > const
> > (gcc.c:9116)
> > ==470150==    by 0x4B4885D: driver::main(int, char**) (gcc.c:8149)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==
> > ==470150== 18 bytes in 1 blocks are definitely lost in loss record
> > 21 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DD6961: concat (concat.c:147)
> > ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> > unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> > ==470150==    by 0x4B849EB: build_search_list(path_prefix const*,
> > char
> > const*, bool, bool) (gcc.c:2974)
> > ==470150==    by 0x4B93DF1: putenv_from_prefixes (gcc.c:2987)
> > ==470150==    by 0x4B93DF1: driver::maybe_run_linker(char const*)
> > const
> > (gcc.c:9117)
> > ==470150==    by 0x4B4885D: driver::main(int, char**) (gcc.c:8149)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==
> > ==470150== 18 bytes in 1 blocks are definitely lost in loss record
> > 22 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DD6961: concat (concat.c:147)
> > ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> > unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> > ==470150==    by 0x4B8E5F2: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6132)
> > ==470150==    by 0x4B8E30B: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6791)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==
> > ==470150== 18 bytes in 1 blocks are definitely lost in loss record
> > 23 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DD6961: concat (concat.c:147)
> > ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> > unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> > ==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char
> > const*,
> > int, bool) (gcc.c:3072)
> > ==470150==    by 0x4B8CD88: find_file (gcc.c:7898)
> > ==470150==    by 0x4B8CD88: end_going_arg() [clone .part.0]
> > (gcc.c:5635)
> > ==470150==    by 0x4B8D116: end_going_arg (gcc.c:5628)
> > ==470150==    by 0x4B8D116: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6061)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B8E60E: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6623)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==
> > ==470150== 18 bytes in 1 blocks are definitely lost in loss record
> > 24 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DD6961: concat (concat.c:147)
> > ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> > unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> > ==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char
> > const*,
> > int, bool) (gcc.c:3072)
> > ==470150==    by 0x4B8CD88: find_file (gcc.c:7898)
> > ==470150==    by 0x4B8CD88: end_going_arg() [clone .part.0]
> > (gcc.c:5635)
> > ==470150==    by 0x4B8D116: end_going_arg (gcc.c:5628)
> > ==470150==    by 0x4B8D116: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6061)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==
> > ==470150== 18 bytes in 1 blocks are definitely lost in loss record
> > 25 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DD6961: concat (concat.c:147)
> > ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> > unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> > ==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char
> > const*,
> > int, bool) (gcc.c:3072)
> > ==470150==    by 0x4B8856D: find_a_program (gcc.c:3100)
> > ==470150==    by 0x4B8856D: execute() (gcc.c:3283)
> > ==470150==    by 0x4B8D3E4: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6037)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==
> > ==470150== 21 bytes in 1 blocks are definitely lost in loss record
> > 26 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DD6961: concat (concat.c:147)
> > ==470150==    by 0x4B9458E: driver::set_up_specs() const
> > (gcc.c:8333)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==    by 0x4B5C708: gcc_jit_context_compile
> > (libgccjit.c:3091)
> > ==470150==
> > ==470150== 28 bytes in 1 blocks are definitely lost in loss record
> > 31 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DD6961: concat (concat.c:147)
> > ==470150==    by 0x4B8BCEF: process_command(unsigned int,
> > cl_decoded_option*) (gcc.c:4738)
> > ==470150==    by 0x4B944F2: driver::set_up_specs() const
> > (gcc.c:8320)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==
> > ==470150== 28 bytes in 1 blocks are definitely lost in loss record
> > 32 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DD6961: concat (concat.c:147)
> > ==470150==    by 0x4B94570: driver::set_up_specs() const
> > (gcc.c:8331)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==    by 0x4B5C708: gcc_jit_context_compile
> > (libgccjit.c:3091)
> > ==470150==
> > ==470150== 31 bytes in 1 blocks are definitely lost in loss record
> > 34 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DE3A5E: xstrdup (xstrdup.c:34)
> > ==470150==    by 0x4B8B026: process_command(unsigned int,
> > cl_decoded_option*) (gcc.c:4696)
> > ==470150==    by 0x4B944F2: driver::set_up_specs() const
> > (gcc.c:8320)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==
> > ==470150== 32 (16 direct, 16 indirect) bytes in 1 blocks are
> > definitely
> > lost in loss record 35 of 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x4B8C881: record_temp_file(char const*, int, int)
> > (gcc.c:2661)
> > ==470150==    by 0x4B8CD3B: end_going_arg() [clone .part.0]
> > (gcc.c:5649)
> > ==470150==    by 0x4B8D116: end_going_arg (gcc.c:5628)
> > ==470150==    by 0x4B8D116: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6061)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==
> > ==470150== 34 bytes in 1 blocks are definitely lost in loss record
> > 36 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x4B4BC29: init_asm_output (toplev.c:701)
> > ==470150==    by 0x4B4BC29: lang_dependent_init (toplev.c:1852)
> > ==470150==    by 0x4B4BC29: do_compile (toplev.c:2141)
> > ==470150==    by 0x4B4BC29: toplev::main(int, char**)
> > (toplev.c:2308)
> > ==470150==    by 0x4B76AEE: gcc::jit::playback::context::compile()
> > (jit-playback.c:2117)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==    by 0x4B5C708: gcc_jit_context_compile
> > (libgccjit.c:3091)
> > ==470150==    by 0x40241F: main (in /tmp/a.out)
> > ==470150==
> > ==470150== 36 bytes in 2 blocks are definitely lost in loss record
> > 37 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DD6961: concat (concat.c:147)
> > ==470150==    by 0x4B846CC: for_each_path(path_prefix const*, bool,
> > unsigned long, void* (*)(char*, void*), void*) (gcc.c:2789)
> > ==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char
> > const*,
> > int, bool) (gcc.c:3072)
> > ==470150==    by 0x4B8CD88: find_file (gcc.c:7898)
> > ==470150==    by 0x4B8CD88: end_going_arg() [clone .part.0]
> > (gcc.c:5635)
> > ==470150==    by 0x4B8D116: end_going_arg (gcc.c:5628)
> > ==470150==    by 0x4B8D116: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6061)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B8DB23: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6668)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==
> > ==470150== 39 bytes in 1 blocks are definitely lost in loss record
> > 38 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DD6961: concat (concat.c:147)
> > ==470150==    by 0x4B94ACF: driver::set_up_specs() const
> > (gcc.c:8535)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==    by 0x4B5C708: gcc_jit_context_compile
> > (libgccjit.c:3091)
> > ==470150==
> > ==470150== 40 bytes in 1 blocks are definitely lost in loss record
> > 50 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE39CF: xrealloc (xmalloc.c:179)
> > ==470150==    by 0x4B8CC0E: reserve<char const*> (vec.h:290)
> > ==470150==    by 0x4B8CC0E: reserve (vec.h:1858)
> > ==470150==    by 0x4B8CC0E: safe_push (vec.h:1967)
> > ==470150==    by 0x4B8CC0E: store_arg(char const*, int, int)
> > (gcc.c:2181)
> > ==470150==    by 0x4B8CD3B: end_going_arg() [clone .part.0]
> > (gcc.c:5649)
> > ==470150==    by 0x4B8F38A: end_going_arg (gcc.c:5628)
> > ==470150==    by 0x4B8F38A: do_spec_2(char const*, char const*)
> > (gcc.c:5744)
> > ==470150==    by 0x4B9097C: do_self_spec(char const*) (gcc.c:5806)
> > ==470150==    by 0x4B90D9B: do_option_spec(char const*, char
> > const*)
> > (gcc.c:5795)
> > ==470150==    by 0x4B95E6F: driver_get_configure_time_options(void
> > (*)(char
> > const*, void*), void*) (gcc.c:11258)
> > ==470150==    by 0x4B7580A:
> > gcc::jit::playback::context::make_fake_args(vec<char*, va_heap,
> > vl_ptr>*,
> > char const*, vec<gcc::jit::recording::requested_dump, va_heap,
> > vl_ptr>*)
> > (jit-playback.c:2562)
> > ==470150==    by 0x4B7680B: gcc::jit::playback::context::compile()
> > (jit-playback.c:2103)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==    by 0x4B5C708: gcc_jit_context_compile
> > (libgccjit.c:3091)
> > ==470150==
> > ==470150== 48 bytes in 1 blocks are definitely lost in loss record
> > 54 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DD6961: concat (concat.c:147)
> > ==470150==    by 0x4B948EC: driver::set_up_specs() const
> > (gcc.c:8453)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==    by 0x4B5C708: gcc_jit_context_compile
> > (libgccjit.c:3091)
> > ==470150==
> > ==470150== 59 (40 direct, 19 indirect) bytes in 1 blocks are
> > definitely
> > lost in loss record 102 of 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x4B8E8A9: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6354)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B8E30B: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6791)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==
> > ==470150== 74 bytes in 1 blocks are definitely lost in loss record
> > 116 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x4B848A4: for_each_path(path_prefix const*, bool,
> > unsigned long, void* (*)(char*, void*), void*) (gcc.c:2813)
> > ==470150==    by 0x4B8564A: find_a_file(path_prefix const*, char
> > const*,
> > int, bool) (gcc.c:3072)
> > ==470150==    by 0x4B945B2: driver::set_up_specs() const
> > (gcc.c:8335)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==
> > ==470150== 75 bytes in 1 blocks are definitely lost in loss record
> > 118 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DD6961: concat (concat.c:147)
> > ==470150==    by 0x4B8B7C7: process_command(unsigned int,
> > cl_decoded_option*) (gcc.c:5410)
> > ==470150==    by 0x4B944F2: driver::set_up_specs() const
> > (gcc.c:8320)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==
> > ==470150== 75 bytes in 1 blocks are definitely lost in loss record
> > 119 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DD6961: concat (concat.c:147)
> > ==470150==    by 0x4B8B802: process_command(unsigned int,
> > cl_decoded_option*) (gcc.c:5413)
> > ==470150==    by 0x4B944F2: driver::set_up_specs() const
> > (gcc.c:8320)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==
> > ==470150== 88 bytes in 1 blocks are definitely lost in loss record
> > 128 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE39CF: xrealloc (xmalloc.c:179)
> > ==470150==    by 0x4B91177: reserve<char const*> (vec.h:290)
> > ==470150==    by 0x4B91177: reserve (vec.h:1858)
> > ==470150==    by 0x4B91177: reserve_exact (vec.h:1878)
> > ==470150==    by 0x4B91177: create (vec.h:1893)
> > ==470150==    by 0x4B91177: alloc_args (gcc.c:2156)
> > ==470150==    by 0x4B91177: driver::global_initializations()
> > (gcc.c:8242)
> > ==470150==    by 0x4B485DC: driver::main(int, char**) (gcc.c:8126)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==    by 0x4B5C708: gcc_jit_context_compile
> > (libgccjit.c:3091)
> > ==470150==    by 0x40241F: main (in /tmp/a.out)
> > ==470150==
> > ==470150== 88 bytes in 1 blocks are definitely lost in loss record
> > 129 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE39CF: xrealloc (xmalloc.c:179)
> > ==470150==    by 0x4B8F8EB: reserve<char const*> (vec.h:290)
> > ==470150==    by 0x4B8F8EB: reserve (vec.h:1858)
> > ==470150==    by 0x4B8F8EB: reserve_exact (vec.h:1878)
> > ==470150==    by 0x4B8F8EB: create (vec.h:1893)
> > ==470150==    by 0x4B8F8EB: alloc_args (gcc.c:2156)
> > ==470150==    by 0x4B8F8EB: eval_spec_function (gcc.c:6905)
> > ==470150==    by 0x4B8F8EB: handle_spec_function(char const*,
> > bool*, char
> > const*) (gcc.c:6994)
> > ==470150==    by 0x4B8FE92: handle_braces(char const*) (gcc.c:7148)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B8F378: do_spec_2(char const*, char const*)
> > (gcc.c:5742)
> > ==470150==    by 0x4B9097C: do_self_spec(char const*) (gcc.c:5806)
> > ==470150==    by 0x4B9470B: driver::set_up_specs() const
> > (gcc.c:8368)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==
> > ==470150== 88 bytes in 1 blocks are definitely lost in loss record
> > 130 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE39CF: xrealloc (xmalloc.c:179)
> > ==470150==    by 0x4B8F8EB: reserve<char const*> (vec.h:290)
> > ==470150==    by 0x4B8F8EB: reserve (vec.h:1858)
> > ==470150==    by 0x4B8F8EB: reserve_exact (vec.h:1878)
> > ==470150==    by 0x4B8F8EB: create (vec.h:1893)
> > ==470150==    by 0x4B8F8EB: alloc_args (gcc.c:2156)
> > ==470150==    by 0x4B8F8EB: eval_spec_function (gcc.c:6905)
> > ==470150==    by 0x4B8F8EB: handle_spec_function(char const*,
> > bool*, char
> > const*) (gcc.c:6994)
> > ==470150==    by 0x4B8FE92: handle_braces(char const*) (gcc.c:7148)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B8E30B: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6791)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==
> > ==470150== 88 bytes in 1 blocks are definitely lost in loss record
> > 131 of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE39CF: xrealloc (xmalloc.c:179)
> > ==470150==    by 0x4B8F8EB: reserve<char const*> (vec.h:290)
> > ==470150==    by 0x4B8F8EB: reserve (vec.h:1858)
> > ==470150==    by 0x4B8F8EB: reserve_exact (vec.h:1878)
> > ==470150==    by 0x4B8F8EB: create (vec.h:1893)
> > ==470150==    by 0x4B8F8EB: alloc_args (gcc.c:2156)
> > ==470150==    by 0x4B8F8EB: eval_spec_function (gcc.c:6905)
> > ==470150==    by 0x4B8F8EB: handle_spec_function(char const*,
> > bool*, char
> > const*) (gcc.c:6994)
> > ==470150==    by 0x4B8FE92: handle_braces(char const*) (gcc.c:7148)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B8E30B: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6791)
> > ==470150==    by 0x4B8E30B: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6791)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==
> > ==470150== 211 bytes in 1 blocks are definitely lost in loss record
> > 146
> > of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x5DE3A5E: xstrdup (xstrdup.c:34)
> > ==470150==    by 0x4B8413B: set_spec(char const*, char const*,
> > bool)
> > (gcc.c:2089)
> > ==470150==    by 0x4B87379: read_specs(char const*, bool, bool)
> > (gcc.c:2581)
> > ==470150==    by 0x4B949A0: driver::set_up_specs() const
> > (gcc.c:8338)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==
> > ==470150== 646 bytes in 47 blocks are definitely lost in loss
> > record 166
> > of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x4B86F12: save_string (gcc.c:9301)
> > ==470150==    by 0x4B86F12: read_specs(char const*, bool, bool)
> > (gcc.c:2542)
> > ==470150==    by 0x4B949A0: driver::set_up_specs() const
> > (gcc.c:8338)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==    by 0x4B5C708: gcc_jit_context_compile
> > (libgccjit.c:3091)
> > ==470150==
> > ==470150== 792 bytes in 9 blocks are definitely lost in loss record
> > 167
> > of
> > 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE39CF: xrealloc (xmalloc.c:179)
> > ==470150==    by 0x4B8F8EB: reserve<char const*> (vec.h:290)
> > ==470150==    by 0x4B8F8EB: reserve (vec.h:1858)
> > ==470150==    by 0x4B8F8EB: reserve_exact (vec.h:1878)
> > ==470150==    by 0x4B8F8EB: create (vec.h:1893)
> > ==470150==    by 0x4B8F8EB: alloc_args (gcc.c:2156)
> > ==470150==    by 0x4B8F8EB: eval_spec_function (gcc.c:6905)
> > ==470150==    by 0x4B8F8EB: handle_spec_function(char const*,
> > bool*, char
> > const*) (gcc.c:6994)
> > ==470150==    by 0x4B8FE92: handle_braces(char const*) (gcc.c:7148)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==    by 0x4B8DDAD: do_spec_1(char const*, int, char
> > const*)
> > (gcc.c:6676)
> > ==470150==    by 0x4B904FC: process_brace_body (gcc.c:7362)
> > ==470150==    by 0x4B904FC: handle_braces(char const*) (gcc.c:7269)
> > ==470150==
> > ==470150== 2,842 bytes in 1 blocks are definitely lost in loss
> > record 185
> > of 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DE3938: xmalloc (xmalloc.c:149)
> > ==470150==    by 0x4B86F94: save_string (gcc.c:9301)
> > ==470150==    by 0x4B86F94: read_specs(char const*, bool, bool)
> > (gcc.c:2556)
> > ==470150==    by 0x4B949A0: driver::set_up_specs() const
> > (gcc.c:8338)
> > ==470150==    by 0x4B485EC: driver::main(int, char**) (gcc.c:8128)
> > ==470150==    by 0x4B74A57:
> > gcc::jit::playback::context::invoke_embedded_driver(vec<char*,
> > va_heap,
> > vl_ptr> const*) (jit-playback.c:2785)
> > ==470150==    by 0x4B77212:
> > gcc::jit::playback::context::invoke_driver(char
> > const*, char const*, char const*, timevar_id_t, bool, bool)
> > (jit-playback.c:2773)
> > ==470150==    by 0x4B783AA:
> > gcc::jit::playback::context::convert_to_dso(char const*)
> > (jit-playback.c:2694)
> > ==470150==    by 0x4B78409:
> > gcc::jit::playback::compile_to_memory::postprocess(char const*)
> > (jit-playback.c:2176)
> > ==470150==    by 0x4B76C79: gcc::jit::playback::context::compile()
> > (jit-playback.c:2149)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==    by 0x4B5C708: gcc_jit_context_compile
> > (libgccjit.c:3091)
> > ==470150==
> > ==470150== 12,611 (48 direct, 12,563 indirect) bytes in 1 blocks
> > are
> > definitely lost in loss record 191 of 213
> > ==470150==    at 0x4842839: malloc (in
> > /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==470150==    by 0x5DF20A8: operator new(unsigned long) (in
> > /home/mnieper/gcc/install/lib/libgccjit.so.0.0.1)
> > ==470150==    by 0x4F62B89:
> > gcc::pass_manager::register_pass_name(opt_pass*, char const*)
> > (passes.c:906)
> > ==470150==    by 0x4F62D98:
> > gcc::pass_manager::register_one_dump_file(opt_pass*) (passes.c:878)
> > ==470150==    by 0x4F62E88:
> > gcc::pass_manager::register_dump_files(opt_pass*) (passes.c:890)
> > ==470150==    by 0x4F698CD:
> > gcc::pass_manager::pass_manager(gcc::context*)
> > (passes.c:1642)
> > ==470150==    by 0x4B4A20F: general_init (toplev.c:1107)
> > ==470150==    by 0x4B4A20F: toplev::main(int, char**)
> > (toplev.c:2240)
> > ==470150==    by 0x4B76AEE: gcc::jit::playback::context::compile()
> > (jit-playback.c:2117)
> > ==470150==    by 0x4B6BA25: gcc::jit::recording::context::compile()
> > (jit-recording.c:1397)
> > ==470150==    by 0x4B5C708: gcc_jit_context_compile
> > (libgccjit.c:3091)
> > ==470150==    by 0x40241F: main (in /tmp/a.out)
> > ==470150==
> > ==470150== LEAK SUMMARY:
> > ==470150==    definitely lost: 5,740 bytes in 94 blocks
> > ==470150==    indirectly lost: 12,598 bytes in 334 blocks
> > ==470150==      possibly lost: 0 bytes in 0 blocks
> > ==470150==    still reachable: 1,467,660 bytes in 744 blocks
> > ==470150==         suppressed: 0 bytes in 0 blocks
> > ==470150== Reachable blocks (those to which a pointer was found)
> > are not
> > shown.
> > ==470150== To see them, rerun with: --leak-check=full --show-leak-
> > kinds=all
> > ==470150==
> > ==470150== For lists of detected and suppressed errors, rerun with:
> > -s
> > ==470150== ERROR SUMMARY: 39 errors from 39 contexts (suppressed: 0
> > from
> > 0)
> > 
> > Am Do., 16. Dez. 2021 um 23:26 Uhr schrieb Mark Wielaard
> > <mark@klomp.org>:
> > 
> > > On Thu, Dec 16, 2021 at 11:00:24PM +0100, Marc Nieper-Wißkirchen
> > > via
> > Jit
> > > wrote:
> > > > Here is the Valgrind output for a debug GCC build:
> > > 
> > > You have to build gcc with:
> > > 
> > > configure --enable-valgrind-annotations
> > > 
> > >     Mark selected memory related operations in the compiler when
> > > run
> > >     under valgrind to suppress false positives.
> > > 
> > > Cheers,
> > > 
> > > Mark
> > > 
> > > 
> IMPORTANT NOTICE: The contents of this email and any attachments are
> confidential and may also be privileged. If you are not the intended
> recipient, please notify the sender immediately and do not disclose
> the contents to any other person, use it for any purpose, or store or
> copy the information in any medium. Thank you.



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Memory leaks (detected by Valgrind)
  2021-12-17 23:22         ` David Malcolm
@ 2021-12-18 13:57           ` Marc Nieper-Wißkirchen
  2021-12-18 16:45             ` David Malcolm
  0 siblings, 1 reply; 16+ messages in thread
From: Marc Nieper-Wißkirchen @ 2021-12-18 13:57 UTC (permalink / raw)
  To: David Malcolm
  Cc: Alex Coplan, Marc Nieper-Wißkirchen, Mark Wielaard, jit

Am Sa., 18. Dez. 2021 um 00:23 Uhr schrieb David Malcolm <dmalcolm@redhat.com>:
>
> On Fri, 2021-12-17 at 10:52 +0000, Alex Coplan via Jit wrote:
> > Hi,
> >
> > > -----Original Message-----
> > > From: Jit <jit-bounces+alex.coplan=arm.com@gcc.gnu.org> On Behalf
> > > Of Marc
> > > Nieper-Wißkirchen via Jit
> > > Sent: 17 December 2021 10:29
> > > To: Mark Wielaard <mark@klomp.org>
> > > Cc: Marc Nieper-Wißkirchen <marc.nieper+gnu@gmail.com>;
> > > jit@gcc.gnu.org
> > > Subject: Re: Memory leaks (detected by Valgrind)
> > >
> > > Thanks!
> > >
> > > With `--enable-valgrind-annotations`, the "uses of uninitialized
> > > values"
> > > have gone away, but a lot of small leaks are still present:
> >
> > Memory leaks with libgccjit are a known issue, see
> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63854
>
> FWIW, it looks like all of the remaining leaks are in gcc.c (the
> "driver" code, for the "gcc" binary).   IIRC most of this relates to
> long-standing code that was written with the assumption that it will
> only be run once and not persist in memory, and so it tends to mix up
> string literals and dynamically-allocated strings without bothering to
> free them (the pointer values persist to the end of "main" when run
> from gcc, but get cleared when run from libgccjit.so).
>
> Patches to clean these up would be great.  That said, I'm not the
> driver/gcc.c maintainer, so I can't formally approve them (but can post
> +1 emails if they look good to me)  [1]

I am currently trying to find my way through the code in gcc.c. During
my experiments, I fixed a single leak where a dynamically allocated
string was assigned in place of a statically allocated one by moving
the dynamically allocated string onto the obstack. I hope that such an
approach is acceptable.

>
> Dave

> [1] also, I'm on vacation, so sorry in advance for any slow responses
> to email.

I wish you a good time on your vacation!

[...]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Memory leaks (detected by Valgrind)
  2021-12-18 13:57           ` Marc Nieper-Wißkirchen
@ 2021-12-18 16:45             ` David Malcolm
  2021-12-18 17:50               ` Marc Nieper-Wißkirchen
  2021-12-18 19:36               ` Marc Nieper-Wißkirchen
  0 siblings, 2 replies; 16+ messages in thread
From: David Malcolm @ 2021-12-18 16:45 UTC (permalink / raw)
  To: Marc Nieper-Wißkirchen; +Cc: Alex Coplan, Mark Wielaard, jit, Joseph Myers

On Sat, 2021-12-18 at 14:57 +0100, Marc Nieper-Wißkirchen wrote:
> Am Sa., 18. Dez. 2021 um 00:23 Uhr schrieb David Malcolm <
> dmalcolm@redhat.com>:
> > 
> > On Fri, 2021-12-17 at 10:52 +0000, Alex Coplan via Jit wrote:
> > > Hi,
> > > 
> > > > -----Original Message-----
> > > > From: Jit <jit-bounces+alex.coplan=arm.com@gcc.gnu.org> On
> > > > Behalf
> > > > Of Marc
> > > > Nieper-Wißkirchen via Jit
> > > > Sent: 17 December 2021 10:29
> > > > To: Mark Wielaard <mark@klomp.org>
> > > > Cc: Marc Nieper-Wißkirchen <marc.nieper+gnu@gmail.com>;
> > > > jit@gcc.gnu.org
> > > > Subject: Re: Memory leaks (detected by Valgrind)
> > > > 
> > > > Thanks!
> > > > 
> > > > With `--enable-valgrind-annotations`, the "uses of
> > > > uninitialized
> > > > values"
> > > > have gone away, but a lot of small leaks are still present:
> > > 
> > > Memory leaks with libgccjit are a known issue, see
> > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63854
> > 
> > FWIW, it looks like all of the remaining leaks are in gcc.c (the
> > "driver" code, for the "gcc" binary).   IIRC most of this relates
> > to
> > long-standing code that was written with the assumption that it
> > will
> > only be run once and not persist in memory, and so it tends to mix
> > up
> > string literals and dynamically-allocated strings without bothering
> > to
> > free them (the pointer values persist to the end of "main" when run
> > from gcc, but get cleared when run from libgccjit.so).
> > 
> > Patches to clean these up would be great.  That said, I'm not the
> > driver/gcc.c maintainer, so I can't formally approve them (but can
> > post
> > +1 emails if they look good to me)  [1]
> 
> I am currently trying to find my way through the code in gcc.c.
> During
> my experiments, I fixed a single leak where a dynamically allocated
> string was assigned in place of a statically allocated one by moving
> the dynamically allocated string onto the obstack. I hope that such
> an
> approach is acceptable.

IIRC I tried that approach, and the maintainer (Joseph Myers, I think),
wasn't keen on it, but this was a few years ago.  I've tried finding
the discussion in the archives, but couldn't.  IIRC, he preferred
adding a flag to strings in gcc.c, tracking if they needed to be freed.
I'm CCing Joseph.   FWIW there's a class in libcpp/include/line-map.h:
class label_text which does this.  Perhaps it could be used for this
(and maybe renamed???)

Commit 9376dd63e6a2d94823f6faf8212c9f37bef5a656 added the code to run
gcc.c in-process (before it was run in a subprocess), so maybe the
discussion was some time around then? (2015-08-25)

Note that it's still possible to run this code in a subprocess rather
than in-process (and thus workaround the leak) using
gcc_jit_context_set_bool_use_external_driver.

> 
> > 
> > Dave
> 
> > [1] also, I'm on vacation, so sorry in advance for any slow
> > responses
> > to email.
> 
> I wish you a good time on your vacation!

Thanks!

Dave




^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Memory leaks (detected by Valgrind)
  2021-12-18 16:45             ` David Malcolm
@ 2021-12-18 17:50               ` Marc Nieper-Wißkirchen
  2021-12-18 19:36               ` Marc Nieper-Wißkirchen
  1 sibling, 0 replies; 16+ messages in thread
From: Marc Nieper-Wißkirchen @ 2021-12-18 17:50 UTC (permalink / raw)
  To: David Malcolm
  Cc: Marc Nieper-Wißkirchen, Alex Coplan, Mark Wielaard, jit,
	Joseph Myers

Am Sa., 18. Dez. 2021 um 17:45 Uhr schrieb David Malcolm <dmalcolm@redhat.com>:
>
> On Sat, 2021-12-18 at 14:57 +0100, Marc Nieper-Wißkirchen wrote:
> > Am Sa., 18. Dez. 2021 um 00:23 Uhr schrieb David Malcolm <
> > dmalcolm@redhat.com>:
> > >
> > > On Fri, 2021-12-17 at 10:52 +0000, Alex Coplan via Jit wrote:
> > > > Hi,
> > > >
> > > > > -----Original Message-----
> > > > > From: Jit <jit-bounces+alex.coplan=arm.com@gcc.gnu.org> On
> > > > > Behalf
> > > > > Of Marc
> > > > > Nieper-Wißkirchen via Jit
> > > > > Sent: 17 December 2021 10:29
> > > > > To: Mark Wielaard <mark@klomp.org>
> > > > > Cc: Marc Nieper-Wißkirchen <marc.nieper+gnu@gmail.com>;
> > > > > jit@gcc.gnu.org
> > > > > Subject: Re: Memory leaks (detected by Valgrind)
> > > > >
> > > > > Thanks!
> > > > >
> > > > > With `--enable-valgrind-annotations`, the "uses of
> > > > > uninitialized
> > > > > values"
> > > > > have gone away, but a lot of small leaks are still present:
> > > >
> > > > Memory leaks with libgccjit are a known issue, see
> > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63854
> > >
> > > FWIW, it looks like all of the remaining leaks are in gcc.c (the
> > > "driver" code, for the "gcc" binary).   IIRC most of this relates
> > > to
> > > long-standing code that was written with the assumption that it
> > > will
> > > only be run once and not persist in memory, and so it tends to mix
> > > up
> > > string literals and dynamically-allocated strings without bothering
> > > to
> > > free them (the pointer values persist to the end of "main" when run
> > > from gcc, but get cleared when run from libgccjit.so).
> > >
> > > Patches to clean these up would be great.  That said, I'm not the
> > > driver/gcc.c maintainer, so I can't formally approve them (but can
> > > post
> > > +1 emails if they look good to me)  [1]
> >
> > I am currently trying to find my way through the code in gcc.c.
> > During
> > my experiments, I fixed a single leak where a dynamically allocated
> > string was assigned in place of a statically allocated one by moving
> > the dynamically allocated string onto the obstack. I hope that such
> > an
> > approach is acceptable.
>
> IIRC I tried that approach, and the maintainer (Joseph Myers, I think),
> wasn't keen on it, but this was a few years ago.  I've tried finding
> the discussion in the archives, but couldn't.  IIRC, he preferred
> adding a flag to strings in gcc.c, tracking if they needed to be freed.
> I'm CCing Joseph.   FWIW there's a class in libcpp/include/line-map.h:
> class label_text which does this.  Perhaps it could be used for this
> (and maybe renamed???)

Okay, no problem to do it that way.

> Commit 9376dd63e6a2d94823f6faf8212c9f37bef5a656 added the code to run
> gcc.c in-process (before it was run in a subprocess), so maybe the
> discussion was some time around then? (2015-08-25)
>
> Note that it's still possible to run this code in a subprocess rather
> than in-process (and thus workaround the leak) using
> gcc_jit_context_set_bool_use_external_driver.

There are still leaks using the external driver as far as I can tell.
In passes.c, the pass map is not deleted. It seems that the following
fixes it:

diff --git a/gcc/passes.c b/gcc/passes.c
index 4bea6ae5b6a..0c70ece5321 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -903,7 +903,7 @@ void
 pass_manager::register_pass_name (opt_pass *pass, const char *name)
 {
   if (!m_name_to_pass_map)
-    m_name_to_pass_map = new hash_map<nofree_string_hash, opt_pass *> (256);
+    m_name_to_pass_map = new hash_map<free_string_hash, opt_pass *> (256);

   if (m_name_to_pass_map->get (name))
     return; /* Ignore plugin passes.  */
@@ -1674,6 +1674,7 @@ pass_manager::~pass_manager ()
   GCC_PASS_LISTS
 #undef DEF_PASS_LIST

+  delete m_name_to_pass_map;
 }

diff --git a/gcc/pass_manager.h b/gcc/pass_manager.h
index aaf72cf6803..f5615e1fda8 100644
--- a/gcc/pass_manager.h
+++ b/gcc/pass_manager.h
@@ -106,7 +106,7 @@ private:

 private:
   context *m_ctxt;
-  hash_map<nofree_string_hash, opt_pass *> *m_name_to_pass_map;
+  hash_map<free_string_hash, opt_pass *> *m_name_to_pass_map;

   /* References to all of the individual passes.
      These fields are generated via macro expansion.
@@ -146,4 +146,3 @@ private:
 } // namespace gcc

diff --git a/gcc/hash-traits.h b/gcc/hash-traits.h
index 6f0373ec27f..1c08d6874ab 100644
--- a/gcc/hash-traits.h
+++ b/gcc/hash-traits.h
@@ -28,6 +28,11 @@ struct typed_free_remove
   static inline void remove (Type *p);
 };

+template <typename Type>
+struct typed_const_free_remove
+{
+  static inline void remove (const Type *p);
+};

 /* Remove with free.  */

@@ -38,6 +43,13 @@ typed_free_remove <Type>::remove (Type *p)
   free (p);
 }

+template <typename Type>
+inline void
+typed_const_free_remove <Type>::remove (const Type *p)
+{
+  free (const_cast <Type *> (p));
+}
+
 /* Helpful type for removing with delete.  */

 template <typename Type>
@@ -305,6 +317,11 @@ struct ggc_ptr_hash : pointer_hash <T>,
ggc_remove <T *> {};
 template <typename T>
 struct ggc_cache_ptr_hash : pointer_hash <T>, ggc_cache_remove <T *> {};

+/* Traits for string elements that should be freed when an element is
+   deleted.  */
+
+struct free_string_hash : string_hash, typed_const_free_remove <char> {};
+
 /* Traits for string elements that should not be freed when an element
    is deleted.  */

--

Marc

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Memory leaks (detected by Valgrind)
  2021-12-18 16:45             ` David Malcolm
  2021-12-18 17:50               ` Marc Nieper-Wißkirchen
@ 2021-12-18 19:36               ` Marc Nieper-Wißkirchen
  1 sibling, 0 replies; 16+ messages in thread
From: Marc Nieper-Wißkirchen @ 2021-12-18 19:36 UTC (permalink / raw)
  To: David Malcolm
  Cc: Marc Nieper-Wißkirchen, Alex Coplan, Mark Wielaard, jit,
	Joseph Myers

Am Sa., 18. Dez. 2021 um 17:45 Uhr schrieb David Malcolm <dmalcolm@redhat.com>:

[...]

> IIRC I tried that approach, and the maintainer (Joseph Myers, I think),
> wasn't keen on it, but this was a few years ago.  I've tried finding
> the discussion in the archives, but couldn't.  IIRC, he preferred
> adding a flag to strings in gcc.c, tracking if they needed to be freed.
> I'm CCing Joseph.   FWIW there's a class in libcpp/include/line-map.h:
> class label_text which does this.  Perhaps it could be used for this
> (and maybe renamed???)

Using label_text (suitably renamed) everywhere looks like the most
elegant solution but it would be a very invasive change to the
existing code of gcc.c. It contains and uses a lot of functions that
handle strings and allocate new ones (like find_file or concat), which
would have to be rewritten to take a label_text argument.

A much simpler solution is IMO to maintain a vector of pointers that
have to be eventually freed. A function

template <typename T>
T *gc (T *s)

adds the argument to the vector of addresses to be garbage-collected
(= freed) later.

Many calls to, say, concat would then be rewritten in the form

gc (concat (...))

Marc

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2021-12-18 19:36 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-16 17:17 Memory leaks (detected by Valgrind) Marc Nieper-Wißkirchen
2021-12-16 22:00 ` Marc Nieper-Wißkirchen
2021-12-16 22:26   ` Mark Wielaard
2021-12-17 10:29     ` Marc Nieper-Wißkirchen
2021-12-17 10:52       ` Alex Coplan
2021-12-17 14:03         ` Marc Nieper-Wißkirchen
2021-12-17 14:54           ` Andrea Corallo
2021-12-17 15:11             ` Marc Nieper-Wißkirchen
2021-12-17 16:07               ` Andrea Corallo
2021-12-17 17:53                 ` Marc Nieper-Wißkirchen
2021-12-17 18:48                   ` Andrea Corallo
2021-12-17 23:22         ` David Malcolm
2021-12-18 13:57           ` Marc Nieper-Wißkirchen
2021-12-18 16:45             ` David Malcolm
2021-12-18 17:50               ` Marc Nieper-Wißkirchen
2021-12-18 19:36               ` Marc Nieper-Wißkirchen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).