Patchwork [STORMY16] Hookize FUNCTION_VALUE, LIBCALL_VALUE and FUNCTION_VALUE_REGNO_P

login
register
mail settings
Submitter Anatoly Sokolov
Date Feb. 27, 2011, 6:40 p.m.
Message ID <429636795.20110227214012@post.ru>
Download mbox | patch
Permalink /patch/84700/
State New
Headers show

Comments

Anatoly Sokolov - Feb. 27, 2011, 6:40 p.m.
Hello.

  This patch removes obsolete FUNCTION_VALUE, LIBCALL_VALUE and
FUNCTION_VALUE_REGNO_P macros from STORMY16 back end in the GCC and introduces
equivalent TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE and
TARGET_FUNCTION_VALUE_REGNO_P target hooks.

  Regression tested on xstormy16-unknown-elf.

  OK to install?

        * config/stormy16/stormy16.h (FUNCTION_VALUE, LIBCALL_VALUE,
        FUNCTION_VALUE_REGNO_P): Remove.
        * config/stormy16/stormy16-protos.h (xstormy16_function_value):
        Remove.
        * config/stormy16/stormy16.c (xstormy16_function_value): Make static.
        Add 'outgoing' argument.
        (xstormy16_libcall_value, xstormy16_function_value_regno_p): New
        function.
        (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE,
        TARGET_FUNCTION_VALUE_REGNO_P): Define.




Anatoly.
Nick Clifton - Feb. 28, 2011, 12:47 p.m.
Hi Anatoly,

>          * config/stormy16/stormy16.h (FUNCTION_VALUE, LIBCALL_VALUE,
>          FUNCTION_VALUE_REGNO_P): Remove.
>          * config/stormy16/stormy16-protos.h (xstormy16_function_value):
>          Remove.
>          * config/stormy16/stormy16.c (xstormy16_function_value): Make static.
>          Add 'outgoing' argument.
>          (xstormy16_libcall_value, xstormy16_function_value_regno_p): New
>          function.
>          (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE,
>          TARGET_FUNCTION_VALUE_REGNO_P): Define.

Approved - please apply.

Cheers
   Nick

Patch

Index: gcc/config/stormy16/stormy16.c
===================================================================
--- gcc/config/stormy16/stormy16.c      (revision 170477)
+++ gcc/config/stormy16/stormy16.c      (working copy)
@@ -1419,10 +1419,12 @@ 
   emit_move_insn (reg_addr_mem, reg_fnaddr);
 }
 
-/* Worker function for FUNCTION_VALUE.  */
+/* Worker function for TARGET_FUNCTION_VALUE.  */
 
-rtx
-xstormy16_function_value (const_tree valtype, const_tree func ATTRIBUTE_UNUSED)
+static rtx
+xstormy16_function_value (const_tree valtype,
+                         const_tree func ATTRIBUTE_UNUSED,
+                         bool outgoing ATTRIBUTE_UNUSED)
 {
   enum machine_mode mode;
   mode = TYPE_MODE (valtype);
@@ -1430,6 +1432,23 @@ 
   return gen_rtx_REG (mode, RETURN_VALUE_REGNUM);
 }
 
+/* Worker function for TARGET_LIBCALL_VALUE.  */
+
+static rtx
+xstormy16_libcall_value (enum machine_mode mode,
+                        const_rtx fun ATTRIBUTE_UNUSED)
+{
+  return gen_rtx_REG (mode, RETURN_VALUE_REGNUM);
+}
+
+/* Worker function for TARGET_FUNCTION_VALUE_REGNO_P.  */
+
+static bool
+xstormy16_function_value_regno_p (const unsigned int regno)
+{
+  return (regno == RETURN_VALUE_REGNUM);
+}
+
 /* A C compound statement that outputs the assembler code for a thunk function,
    used to implement C++ virtual function calls with multiple inheritance.  The
    thunk acts as a wrapper around a virtual function, adjusting the implicit
@@ -2603,6 +2622,12 @@ 
 
 #undef  TARGET_RETURN_IN_MEMORY
 #define TARGET_RETURN_IN_MEMORY xstormy16_return_in_memory
+#undef TARGET_FUNCTION_VALUE
+#define TARGET_FUNCTION_VALUE xstormy16_function_value
+#undef TARGET_LIBCALL_VALUE
+#define TARGET_LIBCALL_VALUE xstormy16_libcall_value
+#undef TARGET_FUNCTION_VALUE_REGNO_P
+#define TARGET_FUNCTION_VALUE_REGNO_P xstormy16_function_value_regno_p
 
 #undef  TARGET_MACHINE_DEPENDENT_REORG
 #define TARGET_MACHINE_DEPENDENT_REORG xstormy16_reorg
Index: gcc/config/stormy16/stormy16.h
===================================================================
--- gcc/config/stormy16/stormy16.h      (revision 170477)
+++ gcc/config/stormy16/stormy16.h      (working copy)
@@ -319,14 +319,7 @@ 
 /* The number of the hard register that is used to return a scalar value from a
    function call.  */
 #define RETURN_VALUE_REGNUM    FIRST_ARGUMENT_REGISTER
-     
-#define FUNCTION_VALUE(VALTYPE, FUNC) \
-  xstormy16_function_value (VALTYPE, FUNC)
 
-#define LIBCALL_VALUE(MODE) gen_rtx_REG (MODE, RETURN_VALUE_REGNUM)
-
-#define FUNCTION_VALUE_REGNO_P(REGNO) ((REGNO) == RETURN_VALUE_REGNUM)
-
 
 /* Function Entry and Exit.  */
 
Index: gcc/config/stormy16/stormy16-protos.h
===================================================================
--- gcc/config/stormy16/stormy16-protos.h       (revision 170477)
+++ gcc/config/stormy16/stormy16-protos.h       (working copy)
@@ -37,7 +37,6 @@ 
 
 #if defined (TREE_CODE) && defined (RTX_CODE)
 extern void xstormy16_initialize_trampoline (rtx, rtx, rtx);
-extern rtx xstormy16_function_value (const_tree, const_tree);
 #endif
 
 #ifdef RTX_CODE