diff options
author | steven <steven@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-12-05 09:34:06 +0000 |
---|---|---|
committer | steven <steven@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-12-05 09:34:06 +0000 |
commit | b5051abb2ab6fe49537cf5f1419bb393a9cc71e1 (patch) | |
tree | 9c39d5d8b0db4235403b46001e26f3ccf5695b33 /gcc/passes.c | |
parent | f38ec256e3a9e78a629944bec4148dd26e5a6b6d (diff) | |
download | gcc-b5051abb2ab6fe49537cf5f1419bb393a9cc71e1.tar.gz |
* passes.c (pass_init_dump_file): Only open a clean graph dump file if
the dump was not already initialized.
Revert:
2012-12-03 Steven Bosscher <steven@gcc.gnu.org>
* passes.c (finish_optimization_passes): Don't finish graph dumps here.
(pass_fini_dump_file): Wrap in TV_DUMP. Finish graph dumps.
(execute_one_pass): Don't set up graph dumps here.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@194186 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/passes.c')
-rw-r--r-- | gcc/passes.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/gcc/passes.c b/gcc/passes.c index b2c4c17b1e2..92b78b690ce 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -223,6 +223,10 @@ rest_of_type_compilation (tree type, int toplev) void finish_optimization_passes (void) { + int i; + struct dump_file_info *dfi; + char *name; + timevar_push (TV_DUMP); if (profile_arc_flag || flag_test_coverage || flag_branch_probabilities) { @@ -230,12 +234,24 @@ finish_optimization_passes (void) end_branch_prob (); dump_finish (pass_profile.pass.static_pass_number); } + if (optimize > 0) { dump_start (pass_profile.pass.static_pass_number, NULL); print_combine_total_stats (); dump_finish (pass_profile.pass.static_pass_number); } + + /* Do whatever is necessary to finish printing the graphs. */ + for (i = TDI_end; (dfi = get_dump_file_info (i)) != NULL; ++i) + if (dump_initialized_p (i) + && (dfi->pflags & TDF_GRAPH) != 0 + && (name = get_dump_file_name (i)) != NULL) + { + finish_graph_dump_file (name); + free (name); + } + timevar_pop (TV_DUMP); } @@ -2058,7 +2074,8 @@ pass_init_dump_file (struct opt_pass *pass) dump_start (pass->static_pass_number, &dump_flags); if (dump_file && current_function_decl) dump_function_header (dump_file, current_function_decl, dump_flags); - if (dump_file && (dump_flags & TDF_GRAPH) + if (initializing_dump + && dump_file && (dump_flags & TDF_GRAPH) && cfun && (cfun->curr_properties & PROP_cfg)) clean_graph_dump_file (dump_file_name); timevar_pop (TV_DUMP); @@ -2079,10 +2096,6 @@ pass_fini_dump_file (struct opt_pass *pass) /* Flush and close dump file. */ if (dump_file_name) { - gcc_assert (dump_file); - if (dump_flags & TDF_GRAPH - && cfun && (cfun->curr_properties & PROP_cfg)) - finish_graph_dump_file (dump_file_name); free (CONST_CAST (char *, dump_file_name)); dump_file_name = NULL; } |