From e19624ee2a4863da6ec9479252cafcf1ef1e1e78 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 27 Feb 2013 22:35:06 +0100 Subject: [PATCH] re PR middle-end/56461 (GCC is leaking lots of memory) PR middle-end/56461 * df-scan.c (df_insn_delete): Use df_scan_free_mws_vec before pool_free. (df_insn_rescan_debug_internal): Use df_scan_free_mws_vec before overwriting it. From-SVN: r196321 --- gcc/ChangeLog | 6 ++++++ gcc/df-scan.c | 2 ++ 2 files changed, 8 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8afdf058d3b..aee4e04ce56 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2013-02-27 Jakub Jelinek + PR middle-end/56461 + * df-scan.c (df_insn_delete): Use df_scan_free_mws_vec before + pool_free. + (df_insn_rescan_debug_internal): Use df_scan_free_mws_vec before + overwriting it. + PR middle-end/56461 * ipa-cp.c (decide_whether_version_node): Call vec_free on known_aggs[i].items and release known_aggs vector. diff --git a/gcc/df-scan.c b/gcc/df-scan.c index 2928776dfcf..931fa2c7e48 100644 --- a/gcc/df-scan.c +++ b/gcc/df-scan.c @@ -1153,6 +1153,7 @@ df_insn_delete (basic_block bb, unsigned int uid) df_ref_chain_delete (insn_info->defs); df_ref_chain_delete (insn_info->uses); df_ref_chain_delete (insn_info->eq_uses); + df_scan_free_mws_vec (insn_info->mw_hardregs); } pool_free (problem_data->insn_pool, insn_info); DF_INSN_UID_SET (uid, NULL); @@ -1332,6 +1333,7 @@ df_insn_rescan_debug_internal (rtx insn) df_ref_chain_delete (insn_info->defs); df_ref_chain_delete (insn_info->uses); df_ref_chain_delete (insn_info->eq_uses); + df_scan_free_mws_vec (insn_info->mw_hardregs); insn_info->defs = df_null_ref_rec; insn_info->uses = df_null_ref_rec;