From 5d00fc6037a11c8abcb95ae811541d37c26e40d7 Mon Sep 17 00:00:00 2001 From: aldyh Date: Wed, 18 Dec 2013 17:38:07 +0000 Subject: [PATCH] * passes.c (execute_function_dump): Set graph_dump_initialized appropriately. (pass_init_dump_file): Similarly. (execute_one_pass): Pass new argument to do_per_function. * tree-pass.h (class opt_pass): New field graph_dump_initialized. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206092 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/passes.c | 21 +++++++++++++++++---- gcc/tree-pass.h | 5 +++++ 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e595132f8d3..b83157ff250 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,13 @@ 2013-12-18 Aldy Hernandez + * passes.c (execute_function_dump): Set graph_dump_initialized + appropriately. + (pass_init_dump_file): Similarly. + (execute_one_pass): Pass new argument to do_per_function. + * tree-pass.h (class opt_pass): New field graph_dump_initialized. + +2013-12-18 Aldy Hernandez + * doc/tree-ssa.texi (SSA Operands): Remove reference to SSA_OP_VMAYUSE. Synchronize SSA_OP* definitions with source. diff --git a/gcc/passes.c b/gcc/passes.c index f30f159813e..bc7bf064489 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -1640,8 +1640,10 @@ do_per_function_toporder (void (*callback) (void *data), void *data) /* Helper function to perform function body dump. */ static void -execute_function_dump (void *data ATTRIBUTE_UNUSED) +execute_function_dump (void *data) { + opt_pass *pass = (opt_pass *)data; + if (dump_file && current_function_decl) { if (cfun->curr_properties & PROP_trees) @@ -1655,7 +1657,14 @@ execute_function_dump (void *data ATTRIBUTE_UNUSED) if ((cfun->curr_properties & PROP_cfg) && (dump_flags & TDF_GRAPH)) - print_graph_cfg (dump_file_name, cfun); + { + if (!pass->graph_dump_initialized) + { + clean_graph_dump_file (dump_file_name); + pass->graph_dump_initialized = true; + } + print_graph_cfg (dump_file_name, cfun); + } } } @@ -1936,6 +1945,7 @@ verify_curr_properties (void *data) bool pass_init_dump_file (opt_pass *pass) { + pass->graph_dump_initialized = false; /* If a dump file name is present, open it if enabled. */ if (pass->static_pass_number != -1) { @@ -1950,7 +1960,10 @@ pass_init_dump_file (opt_pass *pass) if (initializing_dump && dump_file && (dump_flags & TDF_GRAPH) && cfun && (cfun->curr_properties & PROP_cfg)) - clean_graph_dump_file (dump_file_name); + { + clean_graph_dump_file (dump_file_name); + pass->graph_dump_initialized = true; + } timevar_pop (TV_DUMP); return initializing_dump; } @@ -2230,7 +2243,7 @@ execute_one_pass (opt_pass *pass) verify_interpass_invariants (); if (dump_file) - do_per_function (execute_function_dump, NULL); + do_per_function (execute_function_dump, pass); if (pass->type == IPA_PASS) { struct cgraph_node *node; diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index 44b330803d5..308631f3dd1 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -114,6 +114,11 @@ public: /* Static pass number, used as a fragment of the dump file name. */ int static_pass_number; + /* When a given dump file is being initialized, this flag is set to + true if the corresponding TDF_graph dump file has also been + initialized. */ + bool graph_dump_initialized; + protected: gcc::context *m_ctxt; }; -- 2.11.4.GIT