diff options
author | Martin Liska <mliska@suse.cz> | 2015-11-11 12:21:44 +0100 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2015-11-11 11:21:44 +0000 |
commit | c81897872d9e448830b0e2cc520fef538eeb347c (patch) | |
tree | 276c81537cf38e77f5739edf73cfe3a5bcddd2d0 /gcc/passes.c | |
parent | c0ab1970b9dd6e652eda830294f18d6456a3117e (diff) | |
download | gcc-c81897872d9e448830b0e2cc520fef538eeb347c.zip gcc-c81897872d9e448830b0e2cc520fef538eeb347c.tar.gz gcc-c81897872d9e448830b0e2cc520fef538eeb347c.tar.bz2 |
Fix various memory leaks
* gimple-ssa-strength-reduction.c (create_phi_basis):
Use auto_vec.
* passes.c (release_dump_file_name): New function.
(pass_init_dump_file): Used from this function.
(pass_fini_dump_file): Likewise.
* tree-sra.c (convert_callers_for_node): Use xstrdup_for_dump.
* var-tracking.c (vt_initialize): Use pool_allocator.
From-SVN: r230152
Diffstat (limited to 'gcc/passes.c')
-rw-r--r-- | gcc/passes.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/gcc/passes.c b/gcc/passes.c index 7a10cb6..dd8d00a 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -2058,6 +2058,18 @@ verify_curr_properties (function *fn, void *data) gcc_assert ((fn->curr_properties & props) == props); } +/* Release dump file name if set. */ + +static void +release_dump_file_name (void) +{ + if (dump_file_name) + { + free (CONST_CAST (char *, dump_file_name)); + dump_file_name = NULL; + } +} + /* Initialize pass dump file. */ /* This is non-static so that the plugins can use it. */ @@ -2071,6 +2083,7 @@ pass_init_dump_file (opt_pass *pass) gcc::dump_manager *dumps = g->get_dumps (); bool initializing_dump = !dumps->dump_initialized_p (pass->static_pass_number); + release_dump_file_name (); dump_file_name = dumps->get_dump_file_name (pass->static_pass_number); dumps->dump_start (pass->static_pass_number, &dump_flags); if (dump_file && current_function_decl) @@ -2098,11 +2111,7 @@ pass_fini_dump_file (opt_pass *pass) timevar_push (TV_DUMP); /* Flush and close dump file. */ - if (dump_file_name) - { - free (CONST_CAST (char *, dump_file_name)); - dump_file_name = NULL; - } + release_dump_file_name (); g->get_dumps ()->dump_finish (pass->static_pass_number); timevar_pop (TV_DUMP); |