diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c01942dbb70fb636ee6c41ba5e65d5244be42531..c40acc91bee0e4249a92851798d7f8356cd587d2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2004-09-24  Paolo Bonzini  <bonzini@gnu.org>
+
+	* hooks.c (hook_tree_tree_bool_null): New.
+	* hooks.h (hook_tree_tree_bool_null): Declare it.
+	* target-def.c (TARGET_FOLD_BUILTIN): Point to it.
+	* targhooks.c (default_fold_builtin): Remove.
+	* targhooks.h (default_fold_builtin): Remove.
+
 2004-09-24  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
 
 	PR rtl-optimization/17625
diff --git a/gcc/hooks.c b/gcc/hooks.c
index be4b9f9be16220b448f58b646130803df81309f6..65224a4042a604eb73a6b7d52ee7f189a2b5d263 100644
--- a/gcc/hooks.c
+++ b/gcc/hooks.c
@@ -239,3 +239,10 @@ hook_constcharptr_tree_null (tree t ATTRIBUTE_UNUSED)
 {
   return NULL;
 }
+
+tree
+hook_tree_tree_bool_null (tree t ATTRIBUTE_UNUSED, bool ignore ATTRIBUTE_UNUSED)
+{
+  return NULL;
+}
+  
diff --git a/gcc/hooks.h b/gcc/hooks.h
index 8eef06f3bca729cfdfdd6922061c9c6b2cdcdb16..4f7f08c0c1c2107c0fa9234048ce7e7f75bdfd32 100644
--- a/gcc/hooks.h
+++ b/gcc/hooks.h
@@ -64,4 +64,5 @@ extern rtx hook_rtx_rtx_null (rtx);
 extern rtx hook_rtx_tree_int_null (tree, int);
 extern tree hook_tree_tree_identity (tree a);
 extern const char *hook_constcharptr_tree_null (tree);
+extern tree hook_tree_tree_bool_null (tree, bool);
 #endif
diff --git a/gcc/target-def.h b/gcc/target-def.h
index 61adf14325a1350969b2755069fbe0710da170aa..e8262decb8634670ba081d980c30ccf9a2845add 100644
--- a/gcc/target-def.h
+++ b/gcc/target-def.h
@@ -298,7 +298,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 /* In builtins.c.  */
 #define TARGET_INIT_BUILTINS hook_void_void
 #define TARGET_EXPAND_BUILTIN default_expand_builtin
-#define TARGET_FOLD_BUILTIN default_fold_builtin
+#define TARGET_FOLD_BUILTIN hook_tree_tree_bool_null
 
 /* In varasm.c.  */
 #ifndef TARGET_SECTION_TYPE_FLAGS
diff --git a/gcc/targhooks.c b/gcc/targhooks.c
index 48690a130cf886ce1ba197fa67a4d7b89f1e9f43..3bf938c1828c95c0a875e6e9e6df8a9e10e07f14 100644
--- a/gcc/targhooks.c
+++ b/gcc/targhooks.c
@@ -97,12 +97,6 @@ default_expand_builtin_saveregs (void)
   return const0_rtx;
 }
 
-tree
-default_fold_builtin (tree t ATTRIBUTE_UNUSED, bool ignore ATTRIBUTE_UNUSED)
-{
-  return NULL_TREE;
-}
-  
 void
 default_setup_incoming_varargs (CUMULATIVE_ARGS *ca ATTRIBUTE_UNUSED,
 				enum machine_mode mode ATTRIBUTE_UNUSED,
diff --git a/gcc/targhooks.h b/gcc/targhooks.h
index 024a0808e0bc8e05a3b6b492db21616fbee417dc..ce564efa3308c9702f8b6c0cf7423dce344c444c 100644
--- a/gcc/targhooks.h
+++ b/gcc/targhooks.h
@@ -29,7 +29,6 @@ extern rtx default_expand_builtin_saveregs (void);
 extern void default_setup_incoming_varargs (CUMULATIVE_ARGS *, enum machine_mode, tree, int *, int);
 extern rtx default_builtin_setjmp_frame_value (void);
 extern bool default_pretend_outgoing_varargs_named (CUMULATIVE_ARGS *);
-extern tree default_fold_builtin (tree t, bool ignore);
 
 extern enum machine_mode default_eh_return_filter_mode (void);
 extern unsigned HOST_WIDE_INT default_shift_truncation_mask