aboutsummaryrefslogtreecommitdiff
path: root/gcc/passes.c
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2015-11-11 12:21:44 +0100
committerMartin Liska <marxin@gcc.gnu.org>2015-11-11 11:21:44 +0000
commitc81897872d9e448830b0e2cc520fef538eeb347c (patch)
tree276c81537cf38e77f5739edf73cfe3a5bcddd2d0 /gcc/passes.c
parentc0ab1970b9dd6e652eda830294f18d6456a3117e (diff)
downloadgcc-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.c19
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);