Patchwork [rx] hookize FUNCTION_ARG &co.

login
register
mail settings
Submitter Nathan Froyd
Date Aug. 27, 2010, 3:05 p.m.
Message ID <20100827150500.GV16898@codesourcery.com>
Download mbox | patch
Permalink /patch/62859/
State New
Headers show

Comments

Nathan Froyd - Aug. 27, 2010, 3:05 p.m.
This patch hookizes FUNCTION_ARG and related macros for the rx backend.
Nothing unusual here; we can staticize rx_function_arg_size because it's
no longer exposed via FUNCTION_ARG_ADVANCE.

Tested on rx-elf.  I plan to commit this under the obvious rule after
waiting a week for comments.

-Nathan

	* config/rx/rx-protos.h (rx_function_arg, rx_function_arg_size):
	Delete.
	* config/rx/rx.h (FUNCTION_ARG, FUNCTION_ARG_ADVANCE): Delete.
	* config/rx/rx.c (rx_function_arg_size): Make static.
	(rx_function_arg): Likewise.
	(rx_function_arg_advance): New function.
	(TARGET_FUNCTION_ARG, TARGET_FUNCTION_ARG_ADVANCE): Define.
Nick Clifton - Aug. 31, 2010, 8:37 a.m.
Hi Nathan,

> 	* config/rx/rx-protos.h (rx_function_arg, rx_function_arg_size):
> 	Delete.
> 	* config/rx/rx.h (FUNCTION_ARG, FUNCTION_ARG_ADVANCE): Delete.
> 	* config/rx/rx.c (rx_function_arg_size): Make static.
> 	(rx_function_arg): Likewise.
> 	(rx_function_arg_advance): New function.
> 	(TARGET_FUNCTION_ARG, TARGET_FUNCTION_ARG_ADVANCE): Define.

Please apply.

Cheers
   Nick

Patch

diff --git a/gcc/config/rx/rx-protos.h b/gcc/config/rx/rx-protos.h
index 166290d..3adce24 100644
--- a/gcc/config/rx/rx-protos.h
+++ b/gcc/config/rx/rx-protos.h
@@ -44,9 +44,4 @@  extern bool		rx_is_restricted_memory_address (rtx, Mmode);
 extern void		rx_notice_update_cc (rtx body, rtx insn);
 #endif
 
-#ifdef TREE_CODE
-extern unsigned int     rx_function_arg_size (Mmode, const_tree);
-extern struct rtx_def * rx_function_arg (Fargs *, Mmode, const_tree, bool);
-#endif
-
 #endif /* GCC_RX_PROTOS_H */
diff --git a/gcc/config/rx/rx.c b/gcc/config/rx/rx.c
index 503a5cf..86d8ad4 100644
--- a/gcc/config/rx/rx.c
+++ b/gcc/config/rx/rx.c
@@ -758,7 +758,7 @@  rx_round_up (unsigned int value, unsigned int alignment)
 /* Return the number of bytes in the argument registers
    occupied by an argument of type TYPE and mode MODE.  */
 
-unsigned int
+static unsigned int
 rx_function_arg_size (Mmode mode, const_tree type)
 {
   unsigned int num_bytes;
@@ -778,7 +778,7 @@  rx_function_arg_size (Mmode mode, const_tree type)
    parameter list, or the last named parameter before the start of a
    variable parameter list.  */
 
-rtx
+static rtx
 rx_function_arg (Fargs * cum, Mmode mode, const_tree type, bool named)
 {
   unsigned int next_reg;
@@ -815,6 +815,13 @@  rx_function_arg (Fargs * cum, Mmode mode, const_tree type, bool named)
   return gen_rtx_REG (mode, next_reg);
 }
 
+static void
+rx_function_arg_advance (Fargs * cum, Mmode mode, const_tree type,
+			 bool named ATTRIBUTE_UNUSED)
+{
+  *cum += rx_function_arg_size (mode, type);
+}
+
 /* Return an RTL describing where a function return value of type RET_TYPE
    is held.  */
 
@@ -2746,6 +2753,12 @@  rx_memory_move_cost (enum machine_mode mode, enum reg_class regclass, bool in)
 #undef  TARGET_FUNCTION_OK_FOR_SIBCALL
 #define TARGET_FUNCTION_OK_FOR_SIBCALL		rx_function_ok_for_sibcall
 
+#undef  TARGET_FUNCTION_ARG
+#define TARGET_FUNCTION_ARG     		rx_function_arg
+
+#undef  TARGET_FUNCTION_ARG_ADVANCE
+#define TARGET_FUNCTION_ARG_ADVANCE     	rx_function_arg_advance
+
 #undef  TARGET_SET_CURRENT_FUNCTION
 #define TARGET_SET_CURRENT_FUNCTION		rx_set_current_function
 
diff --git a/gcc/config/rx/rx.h b/gcc/config/rx/rx.h
index b3a1269..5e5167e 100644
--- a/gcc/config/rx/rx.h
+++ b/gcc/config/rx/rx.h
@@ -321,11 +321,6 @@  typedef unsigned int CUMULATIVE_ARGS;
 #define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, INDIRECT, N_NAMED_ARGS) \
   (CUM) = 0
 
-#define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \
-  rx_function_arg (& CUM, MODE, TYPE, NAMED)
-
-#define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED)	\
-  (CUM) += rx_function_arg_size (MODE, TYPE)
 
 #define TRAMPOLINE_SIZE 	(! TARGET_BIG_ENDIAN_DATA ? 14 : 20)
 #define TRAMPOLINE_ALIGNMENT 	32