Hi. This patch removes obsolete LIBCALL_VALUE macros from the V850 back end in the GCC and introduces equivalent TARGET_LIBCALL_VALUE target hook.
Regression tested on v850-unknown-eabi. OK for trunk? 2015-07-26 Anatoly Sokolov <ae...@post.ru> * config/v850/v850.h (LIBCALL_VALUE): Remove macros. * config/v850/v850.md (RV_REGNUM): New constants. * config/v850/v850.c (v850_libcall_value): New functions. (v850_function_value_regno_p, v850_function_value): Use RV_REGNUM. (TARGET_LIBCALL_VALUE): Define. Index: gcc/config/v850/v850.md =================================================================== --- gcc/config/v850/v850.md (revision 226237) +++ gcc/config/v850/v850.md (working copy) @@ -39,6 +39,7 @@ [(ZERO_REGNUM 0) ; constant zero (SP_REGNUM 3) ; Stack Pointer (GP_REGNUM 4) ; GP Pointer + (RV_REGNUM 10) ; Return value register (EP_REGNUM 30) ; EP pointer (LP_REGNUM 31) ; Return address register (CC_REGNUM 32) ; Condition code pseudo register Index: gcc/config/v850/v850.c =================================================================== --- gcc/config/v850/v850.c (revision 226237) +++ gcc/config/v850/v850.c (working copy) @@ -2979,7 +2979,7 @@ static bool v850_function_value_regno_p (const unsigned int regno) { - return (regno == 10); + return (regno == RV_REGNUM); } /* Worker function for TARGET_RETURN_IN_MEMORY. */ @@ -3002,9 +3002,18 @@ const_tree fn_decl_or_type ATTRIBUTE_UNUSED, bool outgoing ATTRIBUTE_UNUSED) { - return gen_rtx_REG (TYPE_MODE (valtype), 10); + return gen_rtx_REG (TYPE_MODE (valtype), RV_REGNUM); } +/* Implement TARGET_LIBCALL_VALUE. */ + +static rtx +v850_libcall_value (machine_mode mode, + const_rtx func ATTRIBUTE_UNUSED) +{ + return gen_rtx_REG (mode, RV_REGNUM); +} + /* Worker function for TARGET_CAN_ELIMINATE. */ @@ -3304,6 +3313,8 @@ #define TARGET_FUNCTION_VALUE_REGNO_P v850_function_value_regno_p #undef TARGET_FUNCTION_VALUE #define TARGET_FUNCTION_VALUE v850_function_value +#undef TARGET_LIBCALL_VALUE +#define TARGET_LIBCALL_VALUE v850_libcall_value #undef TARGET_PROMOTE_PROTOTYPES #define TARGET_PROMOTE_PROTOTYPES hook_bool_const_tree_true Index: gcc/config/v850/v850.h =================================================================== --- gcc/config/v850/v850.h (revision 226237) +++ gcc/config/v850/v850.h (working copy) @@ -549,12 +549,6 @@ #define FUNCTION_ARG_REGNO_P(N) (N >= 6 && N <= 9) -/* Define how to find the value returned by a library function - assuming the value has mode MODE. */ - -#define LIBCALL_VALUE(MODE) \ - gen_rtx_REG (MODE, 10) - #define DEFAULT_PCC_STRUCT_RETURN 0 /* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,