diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7d601180e84839f10286854bb830838f203a3b5d..f8a0f5816a73e20131f60986b5d1402c26981057 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,6 +1,17 @@
 2017-05-11  Nathan Sidwell  <nathan@acm.org>
 
-	* dumpfile.h (TDF_FLAGS): New.
+	* dumpfle.h (dump_function): Declare here ...
+	* tree-dump.h (dump_function): ... not here.
+	* dumpfile.c: #include tree-cfg.h.
+	(dump_function): Move here from ...
+	* tree-dump.c (dump_function): ... here.
+	* gimplify.c: #include splay-tree.h, not tree-dump.h.
+	* graphite-poly.c: Don't include tree-dump.h.
+	* cgraphclones.c: Include dumpfile.h not tree-dump.h.
+	* print-tree.c: Likewise.
+	* stor-layout.c: Likewise.
+	* tree-nested.c: Likewise.
+
 	* dumpfile.c (dump_start): Use TDF_FLAGS.
 	(dump_enable_all): Fix TDF_KIND check thinko.
 
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 69b1ac30813b58f310feaa702997883c7c9d7bad..497c9b9a62d5e41f095a186b10ead364ad147539 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,7 @@
+2017-05-11  Nathan Sidwell  <nathan@acm.org>
+
+	* gimple-parser.c: Don't #include tree-dump.h.
+
 2017-05-11  Mikhail Maltsev  <maltsevm@gmail.com>
 
 	PR testsuite/80580
diff --git a/gcc/c/gimple-parser.c b/gcc/c/gimple-parser.c
index ed9e7c55f0ad106407bf6d1bffc09179359bc149..06f2fdba7cd36757cef959de9f825ca95745398c 100644
--- a/gcc/c/gimple-parser.c
+++ b/gcc/c/gimple-parser.c
@@ -53,7 +53,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-ssanames.h"
 #include "gimple-ssa.h"
 #include "tree-dfa.h"
-#include "tree-dump.h"
 
 
 /* Gimple parsing functions.  */
diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c
index 69572b926c4b7fa4b41edd01908dd4878dda3d96..c4ebbb86702053176c432445bd7d89db03b32bc4 100644
--- a/gcc/cgraphclones.c
+++ b/gcc/cgraphclones.c
@@ -78,7 +78,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-eh.h"
 #include "tree-cfg.h"
 #include "tree-inline.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
 #include "gimple-pretty-print.h"
 
 /* Create clone of edge in the node N represented by CALL_EXPR
diff --git a/gcc/dumpfile.c b/gcc/dumpfile.c
index d2e6d3e9b1ac4ef389b3a3585f2a19628427db5a..d9a84ff661f1a01c125f258992b08b637ab950b6 100644
--- a/gcc/dumpfile.c
+++ b/gcc/dumpfile.c
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "diagnostic-core.h"
 #include "dumpfile.h"
 #include "context.h"
+#include "tree-cfg.h"
 
 /* If non-NULL, return one past-the-end of the matching SUBPART of
    the WHOLE string.  */
@@ -980,6 +981,22 @@ dump_basic_block (int dump_kind, basic_block bb, int indent)
     dump_bb (alt_dump_file, bb, indent, TDF_DETAILS);
 }
 
+/* Dump FUNCTION_DECL FN as tree dump PHASE.  */
+
+void
+dump_function (int phase, tree fn)
+{
+  FILE *stream;
+  int flags;
+
+  stream = dump_begin (phase, &flags);
+  if (stream)
+    {
+      dump_function_to_file (fn, stream, flags);
+      dump_end (phase, stream);
+    }
+}
+
 /* Print information from the combine pass on dump_file.  */
 
 void
diff --git a/gcc/dumpfile.h b/gcc/dumpfile.h
index df0f11a3b77faf816c99c3fbb28e8389ec76b227..19c6d3ec90e35fe2c5cc50909aa9b88b7b736613 100644
--- a/gcc/dumpfile.h
+++ b/gcc/dumpfile.h
@@ -147,6 +147,7 @@ extern const char *dump_flag_name (int);
 extern void dump_printf (int, const char *, ...) ATTRIBUTE_PRINTF_2;
 extern void dump_printf_loc (int, source_location,
 			     const char *, ...) ATTRIBUTE_PRINTF_3;
+extern void dump_function (int phase, tree fn);
 extern void dump_basic_block (int, basic_block, int);
 extern void dump_generic_expr_loc (int, source_location, int, tree);
 extern void dump_generic_expr (int, int, tree);
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 98c499070d5c68a174f25b3b5e46f273f1de6255..eda814e74a4ad25cbb00d80bec320aac824c8431 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,7 @@
+2017-05-11  Nathan Sidwell  <nathan@acm.org>
+	
+	* trans-decl.c: Include dumpfile.h not tree-dump.h,
+
 2017-05-09  Janus Weil  <janus@gcc.gnu.org>
 
 	PR fortran/79311
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index efff9a15ac34b1607323496fbca18f0e572a4011..b2f73b784663e1f52ae29cc5c75b18a32ee9576f 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -35,7 +35,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "stor-layout.h"
 #include "varasm.h"
 #include "attribs.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
 #include "toplev.h"	/* For announce_function.  */
 #include "debug.h"
 #include "constructor.h"
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index fd27eb1523f22f28f0c512d38a3ed54801438d0e..a28a9af3b7fc71c4d13ea3a4eba5e6d6c0085cdb 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -56,7 +56,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-low.h"
 #include "cilk.h"
 #include "gomp-constants.h"
-#include "tree-dump.h"
+#include "splay-tree.h"
 #include "gimple-walk.h"
 #include "langhooks-def.h"	/* FIXME: for lhd_set_decl_assembler_name */
 #include "builtins.h"
diff --git a/gcc/graphite-poly.c b/gcc/graphite-poly.c
index 5089cd80c104df8ffa79f74e38e7d4ab16b787cb..5e9323a5546d6df112d9331b1fd9a264f9c8da09 100644
--- a/gcc/graphite-poly.c
+++ b/gcc/graphite-poly.c
@@ -39,7 +39,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-data-ref.h"
 #include "pretty-print.h"
 #include "gimple-pretty-print.h"
-#include "tree-dump.h"
 #include "graphite.h"
 
 /* Print to STDERR the GMP value VAL.  */
diff --git a/gcc/print-tree.c b/gcc/print-tree.c
index 5880d9e2d345e8ffc338d1f07243742150477b1b..e0db2dfe82eb33a394cc898343cd590a409e957a 100644
--- a/gcc/print-tree.c
+++ b/gcc/print-tree.c
@@ -32,7 +32,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-iterator.h"
 #include "gimple-pretty-print.h" /* FIXME */
 #include "tree-cfg.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
 #include "print-tree.h"
 
 /* Define the hash table of nodes already seen.
diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c
index 10e9a324940f4ab5f62a0808c6c09e8e6e9f4c77..1574e4383e8ec0f57bc4ca89ae5323f785d5fe1c 100644
--- a/gcc/stor-layout.c
+++ b/gcc/stor-layout.c
@@ -38,7 +38,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "print-tree.h"
 #include "langhooks.h"
 #include "tree-inline.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
 #include "gimplify.h"
 #include "debug.h"
 
diff --git a/gcc/tree-dump.c b/gcc/tree-dump.c
index d6c55eb432f84c8fca01413d9e2788fecf36deb8..fd1783e020dad96beaf45eaa0a0f2b47d9f65222 100644
--- a/gcc/tree-dump.c
+++ b/gcc/tree-dump.c
@@ -153,22 +153,6 @@ dump_maybe_newline (dump_info_p di)
     }
 }
 
-/* Dump FUNCTION_DECL FN as tree dump PHASE.  */
-
-void
-dump_function (int phase, tree fn)
-{
-  FILE *stream;
-  int flags;
-
-  stream = dump_begin (phase, &flags);
-  if (stream)
-    {
-      dump_function_to_file (fn, stream, flags);
-      dump_end (phase, stream);
-    }
-}
-
 /* Dump pointer PTR using FIELD to identify it.  */
 
 void
diff --git a/gcc/tree-dump.h b/gcc/tree-dump.h
index c4df8f23757fa55f9a12c6730b6bea61dd04f4ad..6649ed2548d2ceae19666c9cc98f121d7432eb5f 100644
--- a/gcc/tree-dump.h
+++ b/gcc/tree-dump.h
@@ -87,7 +87,6 @@ extern void dump_string (dump_info_p, const char *);
 extern void dump_string_field (dump_info_p, const char *, const char *);
 extern void queue_and_dump_index (dump_info_p, const char *, const_tree, int);
 extern void queue_and_dump_type (dump_info_p, const_tree);
-extern void dump_function (int, tree);
 extern int dump_flag (dump_info_p, int, const_tree);
 
 #endif /* ! GCC_TREE_DUMP_H */
diff --git a/gcc/tree-nested.c b/gcc/tree-nested.c
index 48022cd4c11278029eab5bef77684f1cec48ccde..1c176c343cd00a06b2ee09c7d7e8491231a7376b 100644
--- a/gcc/tree-nested.c
+++ b/gcc/tree-nested.c
@@ -31,7 +31,7 @@
 #include "cgraph.h"
 #include "fold-const.h"
 #include "stor-layout.h"
-#include "tree-dump.h"
+#include "dumpfile.h"
 #include "tree-inline.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"