2004-09-20 Paolo Bonzini <bonzini@gnu.org>
authorbonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 20 Sep 2004 14:47:20 +0000 (14:47 +0000)
committerbonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 20 Sep 2004 14:47:20 +0000 (14:47 +0000)
* builtins.c (fold_builtin): Call the new omonymous
target hook for machine-dependent built-ins.
* target-def.h (TARGET_FOLD_BUILTIN): New.
* target.h (struct gcc_target): Add the fold_builtin hook.
* targhooks.c (default_fold_builtin): New.
* targhooks.h (default_fold_builtin): Declare it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87756 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/builtins.c
gcc/target-def.h
gcc/target.h
gcc/targhooks.c
gcc/targhooks.h

index a175283..1a28aa2 100644 (file)
@@ -1,3 +1,12 @@
+2004-09-20  Paolo Bonzini  <bonzini@gnu.org>
+
+       * builtins.c (fold_builtin): Call the new omonymous
+       target hook for machine-dependent built-ins.
+       * target-def.h (TARGET_FOLD_BUILTIN): New.
+       * target.h (struct gcc_target): Add the fold_builtin hook.
+       * targhooks.c (default_fold_builtin): New.
+       * targhooks.h (default_fold_builtin): Declare it.
+
 2004-09-20  Kazu Hirata  <kazu@cs.umass.edu>
 
        * cfg.c, tree-ssa-threadupdate.c, tree-vectorizer.c: Fix
index 8502087..dab12e6 100644 (file)
@@ -8206,7 +8206,7 @@ fold_builtin_1 (tree exp, bool ignore)
   tree type = TREE_TYPE (TREE_TYPE (fndecl));
 
   if (DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_MD)
-    return 0;
+    return targetm.fold_builtin (exp, ignore);
 
   switch (DECL_FUNCTION_CODE (fndecl))
     {
index 3804206..a77c3be 100644 (file)
@@ -287,6 +287,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
 
 /* In varasm.c.  */
 #ifndef TARGET_SECTION_TYPE_FLAGS
@@ -477,6 +478,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
   TARGET_ALIGN_ANON_BITFIELD,                  \
   TARGET_INIT_BUILTINS,                                \
   TARGET_EXPAND_BUILTIN,                       \
+  TARGET_FOLD_BUILTIN,                         \
   TARGET_MANGLE_FUNDAMENTAL_TYPE,              \
   TARGET_INIT_LIBFUNCS,                                \
   TARGET_SECTION_TYPE_FLAGS,                   \
index a6d69e1..6824c13 100644 (file)
@@ -324,6 +324,9 @@ struct gcc_target
   rtx (* expand_builtin) (tree exp, rtx target, rtx subtarget,
                          enum machine_mode mode, int ignore);
 
+  /* Fold a target-specific builtin.  */
+  tree (* fold_builtin) (tree exp, bool ignore);
+
   /* For a vendor-specific fundamental TYPE, return a pointer to
      a statically-allocated string containing the C++ mangling for
      TYPE.  In all other cases, return NULL.  */
index 95a4909..c717075 100644 (file)
@@ -97,6 +97,12 @@ 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,
index bbdfacd..4ff0ea3 100644 (file)
@@ -29,6 +29,7 @@ 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