2005-08-11 Jakub Jelinek * 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/tree-pass.h.jj 2005-08-06 10:40:01.000000000 +0200 +++ gcc/tree-pass.h 2005-08-11 11:10:30.000000000 +0200 @@ -67,6 +67,8 @@ enum tree_dump_index #define TDF_IPA (1 << 11) /* is an IPA dump */ #define TDF_STMTADDR (1 << 12) /* Address of stmt. */ +#define TDF_GRAPH (1 << 13) /* a graph dump is being emitted */ + extern char *get_dump_file_name (enum tree_dump_index); extern int dump_enabled_p (enum tree_dump_index); extern int dump_initialized_p (enum tree_dump_index); --- gcc/tree-dump.c.jj 2005-08-06 10:40:00.000000000 +0200 +++ gcc/tree-dump.c 2005-08-11 11:11:35.000000000 +0200 @@ -752,7 +752,7 @@ static const struct dump_option_value_in {"uid", TDF_UID}, {"stmtaddr", TDF_STMTADDR}, {"all", ~(TDF_RAW | TDF_SLIM | TDF_LINENO | TDF_TREE | TDF_RTL | TDF_IPA - | TDF_STMTADDR)}, + | TDF_STMTADDR | TDF_GRAPH)}, {NULL, 0} }; --- gcc/passes.c.jj 2005-08-06 10:39:59.000000000 +0200 +++ gcc/passes.c 2005-08-11 11:39:02.000000000 +0200 @@ -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 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 * } 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. */