	* 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.

Index: dumpfile.h
===================================================================
--- dumpfile.h	(revision 194362)
+++ dumpfile.h	(working copy)
@@ -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.  */
Index: dumpfile.c
===================================================================
--- dumpfile.c	(revision 194362)
+++ dumpfile.c	(working copy)
@@ -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},
Index: tree-cfg.c
===================================================================
--- tree-cfg.c	(revision 194362)
+++ tree-cfg.c	(working copy)
@@ -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
 ---------------------------------------------------------------------------*/
Index: doc/invoke.texi
===================================================================
--- doc/invoke.texi	(revision 194362)
+++ doc/invoke.texi	(working copy)
@@ -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
 @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 t
 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
