aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2013-12-18 17:38:07 +0000
committerAldy Hernandez <aldyh@gcc.gnu.org>2013-12-18 17:38:07 +0000
commit9d5879a631fe50ebe58e714cc2d85efeaa0d3f4e (patch)
treeca8051fe7ac3f0d5f6d48ff8388018fc4eda5866 /gcc
parent50e6a1482b76a0a06aabf4587bf97da846ff2578 (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/passes.c21
-rw-r--r--gcc/tree-pass.h5
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;
};