Do not leak SSANAMES in lto streamer
* lto-streamer-in.c (input_cfg): Do not init ssa operands. (input_function): Do not init tree_ssa and set in_ssa_p. (input_ssa_names): Do it here. * tree-ssa.c (init_tree_ssa): Add additional SIZE parameter, default to 0 * tree-ssanames.c (init_ssanames): Do not round size up to 50, allocate precisely. * tree-ssa.h (init_tree_ssa): Update prototype.
This commit is contained in:
parent
204b61b906
commit
54af3008b6
@ -1017,7 +1017,6 @@ input_cfg (class lto_input_block *ib, class data_in *data_in,
|
||||
int index;
|
||||
|
||||
init_empty_tree_cfg_for_function (fn);
|
||||
init_ssa_operands (fn);
|
||||
|
||||
profile_status_for_fn (fn) = streamer_read_enum (ib, profile_status_d,
|
||||
PROFILE_LAST);
|
||||
@ -1144,7 +1143,9 @@ input_ssa_names (class lto_input_block *ib, class data_in *data_in,
|
||||
unsigned int i, size;
|
||||
|
||||
size = streamer_read_uhwi (ib);
|
||||
init_ssanames (fn, size);
|
||||
init_tree_ssa (fn, size);
|
||||
cfun->gimple_df->in_ssa_p = true;
|
||||
init_ssa_operands (fn);
|
||||
|
||||
i = streamer_read_uhwi (ib);
|
||||
while (i)
|
||||
@ -1384,9 +1385,6 @@ input_function (tree fn_decl, class data_in *data_in,
|
||||
|
||||
push_struct_function (fn_decl);
|
||||
fn = DECL_STRUCT_FUNCTION (fn_decl);
|
||||
init_tree_ssa (fn);
|
||||
/* We input IL in SSA form. */
|
||||
cfun->gimple_df->in_ssa_p = true;
|
||||
|
||||
gimple_register_cfg_hooks ();
|
||||
|
||||
|
||||
@ -1218,15 +1218,16 @@ err:
|
||||
# pragma GCC diagnostic pop
|
||||
#endif
|
||||
|
||||
/* Initialize global DFA and SSA structures. */
|
||||
/* Initialize global DFA and SSA structures.
|
||||
If SIZE is non-zero allocated ssa names array of a given size. */
|
||||
|
||||
void
|
||||
init_tree_ssa (struct function *fn)
|
||||
init_tree_ssa (struct function *fn, int size)
|
||||
{
|
||||
fn->gimple_df = ggc_cleared_alloc<gimple_df> ();
|
||||
fn->gimple_df->default_defs = hash_table<ssa_name_hasher>::create_ggc (20);
|
||||
pt_solution_reset (&fn->gimple_df->escaped);
|
||||
init_ssanames (fn, 0);
|
||||
init_ssanames (fn, size);
|
||||
}
|
||||
|
||||
/* Deallocate memory associated with SSA data structures for FNDECL. */
|
||||
|
||||
@ -45,7 +45,7 @@ extern void insert_debug_temps_for_defs (gimple_stmt_iterator *);
|
||||
extern void reset_debug_uses (gimple *);
|
||||
extern void release_defs_bitset (bitmap toremove);
|
||||
extern void verify_ssa (bool, bool);
|
||||
extern void init_tree_ssa (function *);
|
||||
extern void init_tree_ssa (function *, int size = 0);
|
||||
extern void delete_tree_ssa (function *);
|
||||
extern bool tree_ssa_useless_type_conversion (tree);
|
||||
extern tree tree_ssa_strip_useless_type_conversions (tree);
|
||||
|
||||
@ -77,10 +77,10 @@ unsigned int ssa_name_nodes_created;
|
||||
void
|
||||
init_ssanames (struct function *fn, int size)
|
||||
{
|
||||
if (size < 50)
|
||||
size = 50;
|
||||
|
||||
vec_alloc (SSANAMES (fn), size);
|
||||
if (!size)
|
||||
vec_alloc (SSANAMES (fn), 50);
|
||||
else
|
||||
vec_safe_reserve (SSANAMES (fn), size, true);
|
||||
|
||||
/* Version 0 is special, so reserve the first slot in the table. Though
|
||||
currently unused, we may use version 0 in alias analysis as part of
|
||||
|
||||
Loading…
Reference in New Issue
Block a user