Summary variables should be deleted at the end of write_summary. It's first newed in generate_summary, and second newed in read_summary. Therefore, delete the first in write_summary, delete the second in execute.
gcc/ChangeLog: 2019-11-26 Luo Xiong Hu <luo...@linux.ibm.com> * ipa-pure-const.c (pure_const_write_summary): Fix memory leak. * ipa-sra.c (ipa_sra_write_summary): Likewise. --- gcc/ipa-pure-const.c | 3 +++ gcc/ipa-sra.c | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c index a142e0cc8f6..89f334cedac 100644 --- a/gcc/ipa-pure-const.c +++ b/gcc/ipa-pure-const.c @@ -1260,6 +1260,9 @@ pure_const_write_summary (void) } lto_destroy_simple_output_block (ob); + + delete funct_state_summaries; + funct_state_summaries = NULL; } diff --git a/gcc/ipa-sra.c b/gcc/ipa-sra.c index c6ed0f44b87..bbc5e84edfb 100644 --- a/gcc/ipa-sra.c +++ b/gcc/ipa-sra.c @@ -2671,6 +2671,11 @@ ipa_sra_write_summary (void) streamer_write_char_stream (ob->main_stream, 0); produce_asm (ob, NULL); destroy_output_block (ob); + + ggc_delete (func_sums); + func_sums = NULL; + delete call_sums; + call_sums = NULL; } /* Read intraprocedural analysis information about E and all of its outgoing -- 2.21.0.777.g83232e3864