builtins.c (fold_builtin): Call the new omonymous target hook for machine-dependent...
authorPaolo Bonzini <bonzini@gnu.org>
Mon, 20 Sep 2004 14:47:20 +0000 (14:47 +0000)
committerPaolo Bonzini <bonzini@gcc.gnu.org>
Mon, 20 Sep 2004 14:47:20 +0000 (14:47 +0000)
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.

From-SVN: r87756

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

index a175283ffdfc623ba4273fdf7d2dc0f82cdeae39..1a28aa24c40036ed098770a07866803d9b17c0d0 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 8502087cc77e3658e8661403da854cad93b3fbcb..dab12e64be568d73dd90f04457021bfcc3a69260 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 38042069122072d7fe78fb16f351e89d69fc0e6e..a77c3be82b1f97f7ee1a041cc5a089521d9fa805 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 a6d69e1938ea123dcc4186622b228e3569d4edf7..6824c13562e8d42e442135a65ae134687dd9bbdb 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 95a4909d43b3b7cda51b43b712b70973fbfd64c1..c71707524441dec16fda57065d7fd8a36ecd4602 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 bbdfacdc0a5cb25e36d88f9cd8bbcdc267d8db48..4ff0ea36af8d01c3d8e9a3af273a12b42869a412 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