From: Steve Ellcey Date: Mon, 14 Dec 2015 23:56:28 +0000 (+0000) Subject: mips.c (mips_promote_function_mode): New function. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=db4aec84e094cc3b736497891d7b0d383b9ce7bf;p=gcc.git mips.c (mips_promote_function_mode): New function. 2015-12-14 Steve Ellcey * config/mips/mips.c (mips_promote_function_mode): New function. (TARGET_PROMOTE_FUNCTION_MODE): Define as above function. (TARGET_PROMOTE_PROTOTYPES): Remove. From-SVN: r231634 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e7b2d6822bb..c90899e4c0d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-12-14 Steve Ellcey + + * config/mips/mips.c (mips_promote_function_mode): New function. + (TARGET_PROMOTE_FUNCTION_MODE): Define as above function. + (TARGET_PROMOTE_PROTOTYPES): Remove. + 2015-12-14 Jason Merrill PR c++/68309 diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 6145944fbf7..7744d193337 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -19906,6 +19906,32 @@ mips_ira_change_pseudo_allocno_class (int regno, reg_class_t allocno_class) return GR_REGS; return allocno_class; } + +/* Implement TARGET_PROMOTE_FUNCTION_MODE */ + +/* This function is equivalent to default_promote_function_mode_always_promote + except that it returns a promoted mode even if type is NULL_TREE. This is + needed by libcalls which have no type (only a mode) such as fixed conversion + routines that take a signed or unsigned char/short argument and convert it + to a fixed type. */ + +static machine_mode +mips_promote_function_mode (const_tree type ATTRIBUTE_UNUSED, + machine_mode mode, + int *punsignedp ATTRIBUTE_UNUSED, + const_tree fntype ATTRIBUTE_UNUSED, + int for_return ATTRIBUTE_UNUSED) +{ + int unsignedp; + + if (type != NULL_TREE) + return promote_mode (type, mode, punsignedp); + + unsignedp = *punsignedp; + PROMOTE_MODE (mode, unsignedp, type); + *punsignedp = unsignedp; + return mode; +} /* Initialize the GCC target structure. */ #undef TARGET_ASM_ALIGNED_HI_OP @@ -20010,10 +20036,7 @@ mips_ira_change_pseudo_allocno_class (int regno, reg_class_t allocno_class) #define TARGET_GIMPLIFY_VA_ARG_EXPR mips_gimplify_va_arg_expr #undef TARGET_PROMOTE_FUNCTION_MODE -#define TARGET_PROMOTE_FUNCTION_MODE default_promote_function_mode_always_promote -#undef TARGET_PROMOTE_PROTOTYPES -#define TARGET_PROMOTE_PROTOTYPES hook_bool_const_tree_true - +#define TARGET_PROMOTE_FUNCTION_MODE mips_promote_function_mode #undef TARGET_FUNCTION_VALUE #define TARGET_FUNCTION_VALUE mips_function_value #undef TARGET_LIBCALL_VALUE