diff options
author | Jakub Jelinek <jakub@redhat.com> | 2005-08-20 18:03:58 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2005-08-20 18:03:58 +0200 |
commit | 5e34206b7e8b20fc6a1cf420076b6461c40ab4da (patch) | |
tree | a4df578ab0cd10699ab3f63bdf10bd3ac48643fc /gcc/passes.c | |
parent | b00d752c95b349b39530e12648f5a79b3e8c0956 (diff) | |
download | gcc-5e34206b7e8b20fc6a1cf420076b6461c40ab4da.zip gcc-5e34206b7e8b20fc6a1cf420076b6461c40ab4da.tar.gz gcc-5e34206b7e8b20fc6a1cf420076b6461c40ab4da.tar.bz2 |
tree-pass.h (TDF_GRAPH): Define.
* tree-pass.h (TDF_GRAPH): Define.
* tree-dump.c (dump_options): Don't set TDF_GRAPH in "all".
* passes.c (finish_optimization_passes): Only call
finish_graph_dump_file if TDF_GRAPH is set.
(execute_one_pass): Only call clean_graph_dump_file if dump_file !=
NULL. Set TDF_GRAPH bit.
(execute_todo): Call print_rtl_graph_with_bb if TDF_GRAPH is set.
* gcc.dg/20050811-1.c: New test.
* gcc.dg/20050811-2.c: New test.
From-SVN: r103304
Diffstat (limited to 'gcc/passes.c')
-rw-r--r-- | gcc/passes.c | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/gcc/passes.c b/gcc/passes.c index f199989..6728e10 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -237,12 +237,12 @@ finish_optimization_passes (void) if (graph_dump_format != no_graph) for (i = TDI_end; (dfi = get_dump_file_info (i)) != NULL; ++i) if (dump_initialized_p (i) - && (dfi->flags & TDF_RTL) != 0 + && (dfi->flags & TDF_GRAPH) != 0 && (name = get_dump_file_name (i)) != NULL) - { - finish_graph_dump_file (name); - free (name); - } + { + finish_graph_dump_file (name); + free (name); + } timevar_pop (TV_DUMP); } @@ -708,7 +708,13 @@ execute_todo (struct tree_opt_pass *pass, unsigned int flags, bool use_required) dump_function_to_file (current_function_decl, dump_file, dump_flags); else if (properties & PROP_cfg) - print_rtl_with_bb (dump_file, get_insns ()); + { + print_rtl_with_bb (dump_file, get_insns ()); + + if (graph_dump_format != no_graph + && (dump_flags & TDF_GRAPH)) + print_rtl_graph_with_bb (dump_file_name, get_insns ()); + } else print_rtl (dump_file, get_insns ()); @@ -782,10 +788,15 @@ execute_one_pass (struct tree_opt_pass *pass) } if (initializing_dump - && graph_dump_format != no_graph + && dump_file + && graph_dump_format != no_graph && (pass->properties_provided & (PROP_cfg | PROP_rtl)) == (PROP_cfg | PROP_rtl)) - clean_graph_dump_file (dump_file_name); + { + get_dump_file_info (pass->static_pass_number)->flags |= TDF_GRAPH; + dump_flags |= TDF_GRAPH; + clean_graph_dump_file (dump_file_name); + } } /* If a timevar is present, start it. */ |