summaryrefslogtreecommitdiff
path: root/gcc/config/fr30
diff options
context:
space:
mode:
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>2004-02-06 05:48:34 +0000
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>2004-02-06 05:48:34 +0000
commita4aab424998c556d770b24d2d57f3837caaead8d (patch)
tree66245d4509adfee1ca1bacce4e60f9fc4da79ff9 /gcc/config/fr30
parentd046d751b1e71918b6e07d9796ec1a4f1c59935b (diff)
downloadgcc-a4aab424998c556d770b24d2d57f3837caaead8d.tar.gz
* config/fr30/fr30-protos.h: Remove the prototype for
fr30_setup_incoming_varargs. Update the prototypes for fr30_num_arg_regs and fr30_function_arg_partial_nregs. * config/fr30/fr30.c (TARGET_STRUCT_VALUE_RTX): New. (TARGET_SETUP_INCOMING_VARARGS): Likewise. (fr30_setup_incoming_varargs): Make it static. Add argument second_time. Don't do anything when second_time is nonzero. (fr30_num_arg_regs): Change the type of the first argument to enum machine_mode. (fr30_function_arg_partial_nregs): Change the type of the second argument to enum machine_mode. * config/fr30/fr30.h (STRUCT_VALUE): Remove. (SETUP_INCOMING_VARARGS): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@77375 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/fr30')
-rw-r--r--gcc/config/fr30/fr30-protos.h9
-rw-r--r--gcc/config/fr30/fr30.c15
-rw-r--r--gcc/config/fr30/fr30.h13
3 files changed, 14 insertions, 23 deletions
diff --git a/gcc/config/fr30/fr30-protos.h b/gcc/config/fr30/fr30-protos.h
index a7119042dd5..d786cd03ad8 100644
--- a/gcc/config/fr30/fr30-protos.h
+++ b/gcc/config/fr30/fr30-protos.h
@@ -29,6 +29,9 @@ extern void fr30_print_operand_address (FILE *, rtx);
extern rtx fr30_move_double (rtx *);
#ifdef TREE_CODE
extern rtx fr30_va_arg (tree, tree);
+extern int fr30_num_arg_regs (enum machine_mode, tree);
+extern int fr30_function_arg_partial_nregs (CUMULATIVE_ARGS,
+ enum machine_mode, tree, int);
#endif /* TREE_CODE */
#ifdef HAVE_MACHINE_MODES
#define Mmode enum machine_mode
@@ -43,9 +46,3 @@ extern int fr30_const_double_is_zero (rtx);
#undef Mmode
#endif /* HAVE_MACHINE_MODES */
#endif /* RTX_CODE */
-
-#ifdef TREE_CODE
-extern int fr30_num_arg_regs (int, tree);
-extern int fr30_function_arg_partial_nregs (CUMULATIVE_ARGS, int, tree, int);
-extern void fr30_setup_incoming_varargs (CUMULATIVE_ARGS, int, tree, int *);
-#endif /* TREE_CODE */
diff --git a/gcc/config/fr30/fr30.c b/gcc/config/fr30/fr30.c
index 4b729e8e819..d6ffc760e35 100644
--- a/gcc/config/fr30/fr30.c
+++ b/gcc/config/fr30/fr30.c
@@ -121,6 +121,8 @@ static struct fr30_frame_info current_frame_info;
/* Zero structure to initialize current_frame_info. */
static struct fr30_frame_info zero_frame_info;
+static void fr30_setup_incoming_varargs (CUMULATIVE_ARGS *, enum machine_mode,
+ tree, int *, int);
static rtx fr30_pass_by_reference (tree, tree);
static rtx fr30_pass_by_value (tree, tree);
@@ -152,6 +154,12 @@ static rtx fr30_pass_by_value (tree, tree);
#undef TARGET_PROMOTE_PROTOTYPES
#define TARGET_PROMOTE_PROTOTYPES hook_bool_tree_true
+#undef TARGET_STRUCT_VALUE_RTX
+#define TARGET_STRUCT_VALUE_RTX hook_rtx_tree_int_null
+
+#undef TARGET_SETUP_INCOMING_VARARGS
+#define TARGET_SETUP_INCOMING_VARARGS fr30_setup_incoming_varargs
+
struct gcc_target targetm = TARGET_INITIALIZER;
/* Returns the number of bytes offset between FROM_REG and TO_REG
@@ -662,9 +670,8 @@ fr30_print_operand (FILE *file, rtx x, int code)
/* Compute the number of word sized registers needed to hold a
function argument of mode INT_MODE and tree type TYPE. */
int
-fr30_num_arg_regs (int int_mode, tree type)
+fr30_num_arg_regs (enum machine_mode mode, tree type)
{
- enum machine_mode mode = (enum machine_mode) int_mode;
int size;
if (MUST_PASS_IN_STACK (mode, type))
@@ -687,7 +694,7 @@ fr30_num_arg_regs (int int_mode, tree type)
parameters to the function. */
int
-fr30_function_arg_partial_nregs (CUMULATIVE_ARGS cum, int int_mode,
+fr30_function_arg_partial_nregs (CUMULATIVE_ARGS cum, enum machine_mode mode,
tree type, int named)
{
/* Unnamed arguments, ie those that are prototyped as ...
@@ -702,7 +709,7 @@ fr30_function_arg_partial_nregs (CUMULATIVE_ARGS cum, int int_mode,
are needed because the parameter must be passed on the stack)
then return zero, as this parameter does not require partial
register, partial stack stack space. */
- if (cum + fr30_num_arg_regs (int_mode, type) <= FR30_NUM_ARG_REGS)
+ if (cum + fr30_num_arg_regs (mode, type) <= FR30_NUM_ARG_REGS)
return 0;
/* Otherwise return the number of registers that would be used. */
diff --git a/gcc/config/fr30/fr30.h b/gcc/config/fr30/fr30.h
index 0d498d706cc..29753016cf9 100644
--- a/gcc/config/fr30/fr30.h
+++ b/gcc/config/fr30/fr30.h
@@ -817,12 +817,6 @@ enum reg_class
If not defined, this defaults to the value 1. */
#define DEFAULT_PCC_STRUCT_RETURN 1
-/* If the structure value address is not passed in a register, define
- `STRUCT_VALUE' as an expression returning an RTX for the place where the
- address is passed. If it returns 0, the address is passed as an "invisible"
- first argument. */
-#define STRUCT_VALUE 0
-
/*}}}*/
/*{{{ Generating Code for Profiling. */
@@ -846,13 +840,6 @@ enum reg_class
}
/*}}}*/
-/*{{{ Implementing the VARARGS Macros. */
-
-#define SETUP_INCOMING_VARARGS(ARGS_SO_FAR, MODE, TYPE, PRETEND_ARGS_SIZE, SECOND_TIME) \
- if (! SECOND_TIME) \
- fr30_setup_incoming_varargs (ARGS_SO_FAR, MODE, TYPE, & PRETEND_ARGS_SIZE)
-
-/*}}}*/
/*{{{ Trampolines for Nested Functions. */
/* On the FR30, the trampoline is: