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.
/* 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)
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);
+ }
}
}
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)
{
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;
}
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;
/* 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;
};