diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 138fc993989..9678b50258c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2010-09-26 Richard Sandiford + + * 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 Richard Henderson diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index d26990e593b..56e4f2da16f 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