aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/doc/invoke.texi17
-rw-r--r--gcc/dumpfile.c4
-rw-r--r--gcc/dumpfile.h2
-rw-r--r--gcc/tree-cfg.c100
5 files changed, 15 insertions, 118 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d9630ed..61e19df 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+2012-12-12 Steven Bosscher <steven@gcc.gnu.org>
+
+ * dumpfile.h (enum tree_dump_index): Remove TDI_vcg.
+ * dumpfile.c (dump_files[]): Remove entry for TDI_vcg.
+ * tree-cfg.c (gimple_cfg2vcg): Remove.
+ (build_gimple_cfg): Don't call it.
+ * doc/invoke.texi (-fdump-tree-vcg): Remove documentation.
+ Correct GraphViz documentation, it does handle multiple functions
+ in a single dump.
+
2012-12-12 Zdenek Dvorak <ook@ucw.cz>
PR tree-optimization/55481
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 4d917d1..06ba770 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -305,7 +305,7 @@ Objective-C and Objective-C++ Dialects}.
-fdump-tree-all @gol
-fdump-tree-original@r{[}-@var{n}@r{]} @gol
-fdump-tree-optimized@r{[}-@var{n}@r{]} @gol
--fdump-tree-cfg -fdump-tree-vcg -fdump-tree-alias @gol
+-fdump-tree-cfg -fdump-tree-alias @gol
-fdump-tree-ch @gol
-fdump-tree-ssa@r{[}-@var{n}@r{]} -fdump-tree-pre@r{[}-@var{n}@r{]} @gol
-fdump-tree-ccp@r{[}-@var{n}@r{]} -fdump-tree-dce@r{[}-@var{n}@r{]} @gol
@@ -5858,10 +5858,9 @@ Enable showing basic block boundaries (disabled in raw dumps).
@item graph
For each of the other indicated dump files (@option{-fdump-rtl-@var{pass}}),
dump a representation of the control flow graph suitable for viewing with
-GraphViz to @file{@var{file}.@var{passid}.@var{pass}.dot}. Note that if
-the file contains more than one function, the generated file cannot be
-used directly by GraphViz@. You must cut and paste each function's
-graph into its own separate file first.
+GraphViz to @file{@var{file}.@var{passid}.@var{pass}.dot}. Each function in
+the file is pretty-printed as a subgraph, so that GraphViz can render them
+all in a single plot.
This option currently only works for RTL dumps, and the RTL is always
dumped in slim form.
@@ -5932,14 +5931,6 @@ file name is made by appending @file{.gimple} to the source file name.
Dump the control flow graph of each function to a file. The file name is
made by appending @file{.cfg} to the source file name.
-@item vcg
-@opindex fdump-tree-vcg
-Dump the control flow graph of each function to a file in VCG format. The
-file name is made by appending @file{.vcg} to the source file name. Note
-that if the file contains more than one function, the generated file cannot
-be used directly by VCG@. You must cut and paste each function's
-graph into its own separate file first.
-
@item ch
@opindex fdump-tree-ch
Dump each function after copying loop headers. The file name is made by
diff --git a/gcc/dumpfile.c b/gcc/dumpfile.c
index 55543cc..2887a57 100644
--- a/gcc/dumpfile.c
+++ b/gcc/dumpfile.c
@@ -62,9 +62,7 @@ static struct dump_file_info dump_files[TDI_end] =
0, 0, 0, 0, 4},
{".nested", "tree-nested", NULL, NULL, NULL, NULL, NULL, TDF_TREE,
0, 0, 0, 0, 5},
- {".vcg", "tree-vcg", NULL, NULL, NULL, NULL, NULL, TDF_TREE,
- 0, 0, 0, 0, 6},
-#define FIRST_AUTO_NUMBERED_DUMP 7
+#define FIRST_AUTO_NUMBERED_DUMP 6
{NULL, "tree-all", NULL, NULL, NULL, NULL, NULL, TDF_TREE,
0, 0, 0, 0, 0},
diff --git a/gcc/dumpfile.h b/gcc/dumpfile.h
index 9697a2c..6c74b5e 100644
--- a/gcc/dumpfile.h
+++ b/gcc/dumpfile.h
@@ -35,8 +35,6 @@ enum tree_dump_index
TDI_original, /* dump each function before optimizing it */
TDI_generic, /* dump each function after genericizing it */
TDI_nested, /* dump each function after unnesting it */
- TDI_vcg, /* create a VCG graph file for each
- function's flowgraph. */
TDI_tree_all, /* enable all the GENERIC/GIMPLE dumps. */
TDI_rtl_all, /* enable all the RTL dumps. */
TDI_ipa_all, /* enable all the IPA dumps. */
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index be89320..385f4c3 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -111,7 +111,6 @@ static unsigned int split_critical_edges (void);
static inline bool stmt_starts_bb_p (gimple, gimple);
static int gimple_verify_flow_info (void);
static void gimple_make_forwarder_block (edge);
-static void gimple_cfg2vcg (FILE *);
static gimple first_non_label_stmt (basic_block);
static bool verify_gimple_transaction (gimple);
@@ -208,19 +207,6 @@ build_gimple_cfg (gimple_seq seq)
make_edges ();
cleanup_dead_labels ();
htab_delete (discriminator_per_locus);
-
- /* Debugging dumps. */
-
- /* Write the flowgraph to a VCG file. */
- {
- int local_dump_flags;
- FILE *vcg_file = dump_begin (TDI_vcg, &local_dump_flags);
- if (vcg_file)
- {
- gimple_cfg2vcg (vcg_file);
- dump_end (TDI_vcg, vcg_file);
- }
- }
}
static unsigned int
@@ -2150,92 +2136,6 @@ debug_cfg_stats (void)
dump_cfg_stats (stderr);
}
-
-/* Dump the flowgraph to a .vcg FILE. */
-
-static void
-gimple_cfg2vcg (FILE *file)
-{
- edge e;
- edge_iterator ei;
- basic_block bb;
- const char *funcname = current_function_name ();
-
- /* Write the file header. */
- fprintf (file, "graph: { title: \"%s\"\n", funcname);
- fprintf (file, "node: { title: \"ENTRY\" label: \"ENTRY\" }\n");
- fprintf (file, "node: { title: \"EXIT\" label: \"EXIT\" }\n");
-
- /* Write blocks and edges. */
- FOR_EACH_EDGE (e, ei, ENTRY_BLOCK_PTR->succs)
- {
- fprintf (file, "edge: { sourcename: \"ENTRY\" targetname: \"%d\"",
- e->dest->index);
-
- if (e->flags & EDGE_FAKE)
- fprintf (file, " linestyle: dotted priority: 10");
- else
- fprintf (file, " linestyle: solid priority: 100");
-
- fprintf (file, " }\n");
- }
- fputc ('\n', file);
-
- FOR_EACH_BB (bb)
- {
- enum gimple_code head_code, end_code;
- const char *head_name, *end_name;
- int head_line = 0;
- int end_line = 0;
- gimple first = first_stmt (bb);
- gimple last = last_stmt (bb);
-
- if (first)
- {
- head_code = gimple_code (first);
- head_name = gimple_code_name[head_code];
- head_line = get_lineno (first);
- }
- else
- head_name = "no-statement";
-
- if (last)
- {
- end_code = gimple_code (last);
- end_name = gimple_code_name[end_code];
- end_line = get_lineno (last);
- }
- else
- end_name = "no-statement";
-
- fprintf (file, "node: { title: \"%d\" label: \"#%d\\n%s (%d)\\n%s (%d)\"}\n",
- bb->index, bb->index, head_name, head_line, end_name,
- end_line);
-
- FOR_EACH_EDGE (e, ei, bb->succs)
- {
- if (e->dest == EXIT_BLOCK_PTR)
- fprintf (file, "edge: { sourcename: \"%d\" targetname: \"EXIT\"", bb->index);
- else
- fprintf (file, "edge: { sourcename: \"%d\" targetname: \"%d\"", bb->index, e->dest->index);
-
- if (e->flags & EDGE_FAKE)
- fprintf (file, " priority: 10 linestyle: dotted");
- else
- fprintf (file, " priority: 100 linestyle: solid");
-
- fprintf (file, " }\n");
- }
-
- if (bb->next_bb != EXIT_BLOCK_PTR)
- fputc ('\n', file);
- }
-
- fputs ("}\n\n", file);
-}
-
-
-
/*---------------------------------------------------------------------------
Miscellaneous helpers
---------------------------------------------------------------------------*/