This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[V850] Hookize LIBCALL_VALUE
- From: Anatoliy Sokolov <aesok at post dot ru>
- To: gcc-patches <gcc-patches at gcc dot gnu dot org>, "nickc at redhat dot com" <nickc at redhat dot com>
- Date: Sun, 26 Jul 2015 22:59:23 +0300
- Subject: [V850] Hookize LIBCALL_VALUE
- Authentication-results: sourceware.org; auth=none
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 <aesok@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,