Commit c3431191 by Martin Liska Committed by Martin Liska

Fix memory leaks in IPA.

	* ipa-inline-analysis.c (estimate_function_body_sizes): Call
	body_info release function.
	* ipa-prop.c (ipa_release_body_info): New function.
	(ipa_analyze_node): Call the function.
	(ipa_node_params::~ipa_node_params): Release known_csts.
	* ipa-prop.h (ipa_release_body_info): Declare.

From-SVN: r230028
parent af121e82
2015-11-09 Martin Liska <mliska@suse.cz> 2015-11-09 Martin Liska <mliska@suse.cz>
* ipa-inline-analysis.c (estimate_function_body_sizes): Call
body_info release function.
* ipa-prop.c (ipa_release_body_info): New function.
(ipa_analyze_node): Call the function.
(ipa_node_params::~ipa_node_params): Release known_csts.
* ipa-prop.h (ipa_release_body_info): Declare.
2015-11-09 Martin Liska <mliska@suse.cz>
* gcc.c (record_temp_file): Release name string. * gcc.c (record_temp_file): Release name string.
* ifcvt.c (noce_convert_multiple_sets): Use auto_vec instead * ifcvt.c (noce_convert_multiple_sets): Use auto_vec instead
of vec. of vec.
...@@ -2853,7 +2853,7 @@ estimate_function_body_sizes (struct cgraph_node *node, bool early) ...@@ -2853,7 +2853,7 @@ estimate_function_body_sizes (struct cgraph_node *node, bool early)
inline_summaries->get (node)->self_time = time; inline_summaries->get (node)->self_time = time;
inline_summaries->get (node)->self_size = size; inline_summaries->get (node)->self_size = size;
nonconstant_names.release (); nonconstant_names.release ();
fbi.bb_infos.release (); ipa_release_body_info (&fbi);
if (opt_for_fn (node->decl, optimize)) if (opt_for_fn (node->decl, optimize))
{ {
if (!early) if (!early)
......
...@@ -2258,6 +2258,19 @@ analysis_dom_walker::before_dom_children (basic_block bb) ...@@ -2258,6 +2258,19 @@ analysis_dom_walker::before_dom_children (basic_block bb)
ipa_compute_jump_functions_for_bb (m_fbi, bb); ipa_compute_jump_functions_for_bb (m_fbi, bb);
} }
/* Release body info FBI. */
void
ipa_release_body_info (struct ipa_func_body_info *fbi)
{
int i;
struct ipa_bb_info *bi;
FOR_EACH_VEC_ELT (fbi->bb_infos, i, bi)
free_ipa_bb_info (bi);
fbi->bb_infos.release ();
}
/* Initialize the array describing properties of formal parameters /* Initialize the array describing properties of formal parameters
of NODE, analyze their uses and compute jump functions associated of NODE, analyze their uses and compute jump functions associated
with actual arguments of calls from within NODE. */ with actual arguments of calls from within NODE. */
...@@ -2313,11 +2326,7 @@ ipa_analyze_node (struct cgraph_node *node) ...@@ -2313,11 +2326,7 @@ ipa_analyze_node (struct cgraph_node *node)
analysis_dom_walker (&fbi).walk (ENTRY_BLOCK_PTR_FOR_FN (cfun)); analysis_dom_walker (&fbi).walk (ENTRY_BLOCK_PTR_FOR_FN (cfun));
int i; ipa_release_body_info (&fbi);
struct ipa_bb_info *bi;
FOR_EACH_VEC_ELT (fbi.bb_infos, i, bi)
free_ipa_bb_info (bi);
fbi.bb_infos.release ();
free_dominance_info (CDI_DOMINATORS); free_dominance_info (CDI_DOMINATORS);
pop_cfun (); pop_cfun ();
} }
...@@ -3306,6 +3315,7 @@ ipa_node_params::~ipa_node_params () ...@@ -3306,6 +3315,7 @@ ipa_node_params::~ipa_node_params ()
free (lattices); free (lattices);
/* Lattice values and their sources are deallocated with their alocation /* Lattice values and their sources are deallocated with their alocation
pool. */ pool. */
known_csts.release ();
known_contexts.release (); known_contexts.release ();
lattices = NULL; lattices = NULL;
......
...@@ -775,7 +775,7 @@ bool ipa_modify_expr (tree *, bool, ipa_parm_adjustment_vec); ...@@ -775,7 +775,7 @@ bool ipa_modify_expr (tree *, bool, ipa_parm_adjustment_vec);
ipa_parm_adjustment *ipa_get_adjustment_candidate (tree **, bool *, ipa_parm_adjustment *ipa_get_adjustment_candidate (tree **, bool *,
ipa_parm_adjustment_vec, ipa_parm_adjustment_vec,
bool); bool);
void ipa_release_body_info (struct ipa_func_body_info *);
/* From tree-sra.c: */ /* From tree-sra.c: */
tree build_ref_for_offset (location_t, tree, HOST_WIDE_INT, bool, tree, tree build_ref_for_offset (location_t, tree, HOST_WIDE_INT, bool, tree,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment