From 33c6d8ad750c9a982c216e32456eb9deb2586d2f Mon Sep 17 00:00:00 2001 From: dmalcolm Date: Wed, 19 Nov 2014 19:23:06 +0000 Subject: PR jit/63854: Fix memory leaks within context/pass_manager/dump_manager gcc/ChangeLog: PR jit/63854 * config/alpha/alpha.c (alpha_option_override): Remove static from "handle_trap_shadows_info" and "align_insns_info". * config/i386/i386.c (ix86_option_override): Likewise for "insert_vzeroupper_info". * config/rl78/rl78.c (rl78_asm_file_start): Likewise for "rl78_devirt_info" and "rl78_move_elim_info". * config/rs6000/rs6000.c (rs6000_option_override): Likewise for "analyze_swaps_info". * context.c (gcc::context::~context): New. * context.h (gcc::context::~context): New. * dumpfile.c (dump_files): Add "false" initializers for new field "owns_strings". (gcc::dump_manager::~dump_manager): New. (gcc::dump_manager::dump_register): Add param "take_ownership". * dumpfile.h (struct dump_file_info): Add field "owns_strings". (gcc::dump_manager::~dump_manager): New. (gcc::dump_manager::dump_register): Add param "take_ownership". * pass_manager.h (gcc::pass_manager::operator delete): New. (gcc::pass_manager::~pass_manager): New. * passes.c (pass_manager::register_one_dump_file): Pass "true" to new "owns_strings" argument to dump_register. (pass_manager::operator delete): New. (delete_pass_tree): New function. (pass_manager::~pass_manager): New. * statistics.c (statistics_early_init): Pass "false" to new "owns_strings" argument to dump_register. * toplev.c (toplev::finalize): Clean up the context and thus the things it owns. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217793 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/pass_manager.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'gcc/pass_manager.h') diff --git a/gcc/pass_manager.h b/gcc/pass_manager.h index 9f4d67bc84c..82857a9b4e3 100644 --- a/gcc/pass_manager.h +++ b/gcc/pass_manager.h @@ -47,8 +47,10 @@ class pass_manager { public: void *operator new (size_t sz); + void operator delete (void *ptr); pass_manager (context *ctxt); + ~pass_manager (); void register_pass (struct register_pass_info *pass_info); void register_one_dump_file (opt_pass *pass); -- cgit v1.2.1