mips.c (mips_builtin_decls): Declare.
authorRichard Sandiford <rdsandiford@googlemail.com>
Sun, 26 Sep 2010 07:26:20 +0000 (07:26 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Sun, 26 Sep 2010 07:26:20 +0000 (07:26 +0000)
gcc/
* config/mips/mips.c (mips_builtin_decls): Declare.
(mips_init_builtins): Store function declarations in
mips_builtin_decls.
(mips_builtin_decl): New function.
(TARGET_BUILTIN_DECL): Define.

From-SVN: r164629

gcc/ChangeLog
gcc/config/mips/mips.c

index 138fc99398981326785c231e11ace798edb86f45..9678b50258ca01bdb95e02a2e10a363210dfa932 100644 (file)
@@ -1,3 +1,11 @@
+2010-09-26  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * config/mips/mips.c (mips_builtin_decls): Declare.
+       (mips_init_builtins): Store function declarations in
+       mips_builtin_decls.
+       (mips_builtin_decl): New function.
+       (TARGET_BUILTIN_DECL): Define.
+
 2010-09-25  Kai Tietz  <kai.tietz@onevision.com>
            Richard Henderson  <rth@redhat.com>
 
index d26990e593bae0004e3ab0b62a5720db1aed9b22..56e4f2da16fd60592049143acea65a9bc8ee37db 100644 (file)
@@ -13025,6 +13025,10 @@ static const struct mips_builtin_description mips_builtins[] = {
   DIRECT_NO_TARGET_BUILTIN (cache, MIPS_VOID_FTYPE_SI_CVPOINTER, cache)
 };
 
+/* Index I is the function declaration for mips_builtins[I], or null if the
+   function isn't defined on this target.  */
+static GTY(()) tree mips_builtin_decls[ARRAY_SIZE (mips_builtins)];
+
 /* MODE is a vector mode whose elements have type TYPE.  Return the type
    of the vector itself.  */
 
@@ -13141,12 +13145,23 @@ mips_init_builtins (void)
     {
       d = &mips_builtins[i];
       if (d->avail ())
-       add_builtin_function (d->name,
-                             mips_build_function_type (d->function_type),
-                             i, BUILT_IN_MD, NULL, NULL);
+       mips_builtin_decls[i]
+         = add_builtin_function (d->name,
+                                 mips_build_function_type (d->function_type),
+                                 i, BUILT_IN_MD, NULL, NULL);
     }
 }
 
+/* Implement TARGET_BUILTIN_DECL.  */
+
+static tree
+mips_builtin_decl (unsigned int code, bool initialize_p ATTRIBUTE_UNUSED)
+{
+  if (code >= ARRAY_SIZE (mips_builtins))
+    return error_mark_node;
+  return mips_builtin_decls[code];
+}
+
 /* Take argument ARGNO from EXP's argument list and convert it into a
    form suitable for input operand OPNO of instruction ICODE.  Return the
    value.  */
@@ -16519,6 +16534,8 @@ mips_shift_truncation_mask (enum machine_mode mode)
 
 #undef TARGET_INIT_BUILTINS
 #define TARGET_INIT_BUILTINS mips_init_builtins
+#undef TARGET_BUILTIN_DECL
+#define TARGET_BUILTIN_DECL mips_builtin_decl
 #undef TARGET_EXPAND_BUILTIN
 #define TARGET_EXPAND_BUILTIN mips_expand_builtin