Patchwork [m68hc11] hookize FUNCTION_ARG &co.

login
register
mail settings
Submitter Nathan Froyd
Date Oct. 8, 2010, 1:58 p.m.
Message ID <1286546325-17739-1-git-send-email-froydnj@codesourcery.com>
Download mbox | patch
Permalink /patch/67208/
State New
Headers show

Comments

Nathan Froyd - Oct. 8, 2010, 1:58 p.m.
The patch below hookizes FUNCTION_ARG and related macros for the m68hc11
backend.  Nothing special here.

Tested by inspection with cross to m68hc11-elf.  I plan to commit this
under the obvious rule after waiting a week for comments/approval.

	* config/m68hc11/m68hc11-protos.h (m68hc11_function_arg): Delete.
	(m68hc11_function_arg_advance): Delete.
	* config/m68hc11/m68hc11.h (FUNCTION_ARG): Delete.
	(FUNCTION_ARG_ADVANCE): Delete.
	* config/m68hc11/m68hc11.c (m68hc11_function_arg): Make static.
	Take a const_tree and a bool.
	(m68hc11_function_arg_advance): Likewise.
	(TARGET_FUNCTION_ARG, TARGET_FUNCTION_ARG_ADVANCE): Define.
---
 gcc/config/m68hc11/m68hc11-protos.h |   10 ----------
 gcc/config/m68hc11/m68hc11.c        |   21 ++++++++++++++++-----
 gcc/config/m68hc11/m68hc11.h        |   21 ---------------------
 3 files changed, 16 insertions(+), 36 deletions(-)

Patch

diff --git a/gcc/config/m68hc11/m68hc11-protos.h b/gcc/config/m68hc11/m68hc11-protos.h
index e98c190..08e0b4d 100644
--- a/gcc/config/m68hc11/m68hc11-protos.h
+++ b/gcc/config/m68hc11/m68hc11-protos.h
@@ -31,13 +31,6 @@  extern int m68hc11_initial_elimination_offset (int, int);
 extern void expand_prologue (void);
 extern void expand_epilogue (void);
 
-#ifdef TREE_CODE
-extern void m68hc11_function_arg_advance (CUMULATIVE_ARGS*,
-                                          enum machine_mode,
-                                          tree,
-                                          int);
-#endif
-
 #ifdef RTX_CODE
 extern int m68hc11_auto_inc_p (rtx);
 
@@ -98,9 +91,6 @@  extern int soft_reg_operand (rtx, enum machine_mode);
 
 extern void m68hc11_init_cumulative_args (CUMULATIVE_ARGS*, tree, rtx);
 
-extern rtx m68hc11_function_arg (const CUMULATIVE_ARGS* ,
-                                 enum machine_mode,
-                                 tree, int);
 #ifdef ARGS_SIZE_RTX
 extern enum direction m68hc11_function_arg_padding (enum machine_mode,
 						    const_tree);
diff --git a/gcc/config/m68hc11/m68hc11.c b/gcc/config/m68hc11/m68hc11.c
index bf9c26c..b5d33b5 100644
--- a/gcc/config/m68hc11/m68hc11.c
+++ b/gcc/config/m68hc11/m68hc11.c
@@ -98,6 +98,11 @@  static bool m68hc11_return_in_memory (const_tree, const_tree);
 static bool m68hc11_can_eliminate (const int, const int);
 static void m68hc11_trampoline_init (rtx, tree, rtx);
 
+static rtx m68hc11_function_arg (CUMULATIVE_ARGS*, enum machine_mode,
+				 const_tree, bool);
+static void m68hc11_function_arg_advance (CUMULATIVE_ARGS*, enum machine_mode,
+					  const_tree, bool);
+
 /* Must be set to 1 to produce debug messages.  */
 int debug_m6811 = 0;
 
@@ -276,6 +281,11 @@  static const struct attribute_spec m68hc11_attribute_table[] =
 #undef TARGET_INIT_LIBFUNCS
 #define TARGET_INIT_LIBFUNCS m68hc11_init_libfuncs
 
+#undef TARGET_FUNCTION_ARG
+#define TARGET_FUNCTION_ARG m68hc11_function_arg
+#undef TARGET_FUNCTION_ARG_ADVANCE
+#define TARGET_FUNCTION_ARG_ADVANCE m68hc11_function_arg_advance
+
 #undef TARGET_STRUCT_VALUE_RTX
 #define TARGET_STRUCT_VALUE_RTX m68hc11_struct_value_rtx
 #undef TARGET_RETURN_IN_MEMORY
@@ -1477,9 +1487,9 @@  m68hc11_init_cumulative_args (CUMULATIVE_ARGS *cum, tree fntype, rtx libname)
    of mode MODE and data type TYPE.
    (TYPE is null for libcalls where that information may not be available.)  */
 
-void
+static void
 m68hc11_function_arg_advance (CUMULATIVE_ARGS *cum, enum machine_mode mode,
-                              tree type, int named ATTRIBUTE_UNUSED)
+                              const_tree type, bool named ATTRIBUTE_UNUSED)
 {
   if (mode != BLKmode)
     {
@@ -1515,9 +1525,10 @@  m68hc11_function_arg_advance (CUMULATIVE_ARGS *cum, enum machine_mode mode,
    NAMED is nonzero if this argument is a named parameter
     (otherwise it is an extra parameter matching an ellipsis).  */
 
-struct rtx_def *
-m68hc11_function_arg (const CUMULATIVE_ARGS *cum, enum machine_mode mode,
-                      tree type ATTRIBUTE_UNUSED, int named ATTRIBUTE_UNUSED)
+static rtx
+m68hc11_function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode,
+                      const_tree type ATTRIBUTE_UNUSED,
+		      bool named ATTRIBUTE_UNUSED)
 {
   if (cum->words != 0)
     {
diff --git a/gcc/config/m68hc11/m68hc11.h b/gcc/config/m68hc11/m68hc11.h
index 9e45cb5..8e817c8 100644
--- a/gcc/config/m68hc11/m68hc11.h
+++ b/gcc/config/m68hc11/m68hc11.h
@@ -890,27 +890,6 @@  typedef struct m68hc11_args
 #define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, INDIRECT, N_NAMED_ARGS) \
     (m68hc11_init_cumulative_args (&CUM, FNTYPE, LIBNAME))
 
-/* Update the data in CUM to advance over an argument of mode MODE and data
-   type TYPE. (TYPE is null for libcalls where that information may not be
-   available.) */
-#define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED) \
-    (m68hc11_function_arg_advance (&CUM, MODE, TYPE, NAMED))
-
-/* Define where to put the arguments to a function.
-   Value is zero to push the argument on the stack,
-   or a hard register in which to store the argument.
-
-   MODE is the argument's machine mode.
-   TYPE is the data type of the argument (as a tree).
-    This is null for libcalls where that information may
-    not be available.
-   CUM is a variable of type CUMULATIVE_ARGS which gives info about
-    the preceding args and about the function being called.
-   NAMED is nonzero if this argument is a named parameter
-    (otherwise it is an extra parameter matching an ellipsis).  */
-#define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \
-  (m68hc11_function_arg (&CUM, MODE, TYPE, NAMED))
-
 /* Define the profitability of saving registers around calls.
 
    Disable this because the saving instructions generated by