diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2013-12-18 17:38:07 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@gcc.gnu.org> | 2013-12-18 17:38:07 +0000 |
commit | 9d5879a631fe50ebe58e714cc2d85efeaa0d3f4e (patch) | |
tree | ca8051fe7ac3f0d5f6d48ff8388018fc4eda5866 /gcc | |
parent | 50e6a1482b76a0a06aabf4587bf97da846ff2578 (diff) | |
download | gcc-9d5879a631fe50ebe58e714cc2d85efeaa0d3f4e.zip gcc-9d5879a631fe50ebe58e714cc2d85efeaa0d3f4e.tar.gz gcc-9d5879a631fe50ebe58e714cc2d85efeaa0d3f4e.tar.bz2 |
passes.c (execute_function_dump): Set graph_dump_initialized appropriately.
* 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.
From-SVN: r206092
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/passes.c | 21 | ||||
-rw-r--r-- | gcc/tree-pass.h | 5 |
3 files changed, 30 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e595132..b83157f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,13 @@ 2013-12-18 Aldy Hernandez <aldyh@redhat.com> + * 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 <aldyh@redhat.com> + * 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 f30f159..bc7bf06 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 44b3308..308631f 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; }; |