This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[V850] Hookize LIBCALL_VALUE


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,


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]