aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2010-09-26 07:26:20 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2010-09-26 07:26:20 +0000
commit7725086e26b7642b85d2a2461d2039d2a67ae138 (patch)
tree2f4cc587660fcd98a92634a391cbf4d025a86659 /gcc
parent174425adcde4e0f7205e9ac6832f4e7a451b123e (diff)
downloadgcc-7725086e26b7642b85d2a2461d2039d2a67ae138.zip
gcc-7725086e26b7642b85d2a2461d2039d2a67ae138.tar.gz
gcc-7725086e26b7642b85d2a2461d2039d2a67ae138.tar.bz2
mips.c (mips_builtin_decls): Declare.
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/mips/mips.c23
2 files changed, 28 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 138fc99..9678b50 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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>
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index d26990e..56e4f2d 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -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