iq2000-protos.h: Remove the prototype for iq2000_setup_incoming_varargs.

* config/iq2000/iq2000-protos.h: Remove the prototype for
	iq2000_setup_incoming_varargs.
	* config/iq2000/iq2000.c (TARGET_PROMOTE_FUNCTION_ARGS): New.
	(TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
	(TARGET_PROMOTE_PROTOTYPES): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_SETUP_INCOMING_VARARGS): Likewise.
	(TARGET_STRICT_ARGUMENT_NAMING): Likewise.
	(iq2000_return_in_memory): Likewise.
	(iq2000_setup_incoming_varargs): Make it static.  Receive the
	first argument by reference.
	* config/iq2000/iq2000.h (PROMOTE_FUNCTION_ARGS): Remove.
	(PROMOTE_FUNCTION_RETURN): Likewise.
	(PROMOTE_PROTOTYPES): Likewise.
	(RETURN_IN_MEMORY): Likewise.
	(STRUCT_VALUE): Likewise.
	(SETUP_INCOMING_VARARGS): Likewise.
	(STRICT_ARGUMENT_NAMING): Likewise.

From-SVN: r76739
This commit is contained in:
Kazu Hirata 2004-01-27 19:20:02 +00:00 committed by Kazu Hirata
parent 9cdfc8e7e2
commit 69a4504000
4 changed files with 66 additions and 34 deletions

View File

@ -1,3 +1,25 @@
2004-01-27 Kazu Hirata <kazu@cs.umass.edu>
* config/iq2000/iq2000-protos.h: Remove the prototype for
iq2000_setup_incoming_varargs.
* config/iq2000/iq2000.c (TARGET_PROMOTE_FUNCTION_ARGS): New.
(TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
(TARGET_PROMOTE_PROTOTYPES): Likewise.
(TARGET_STRUCT_VALUE_RTX): Likewise.
(TARGET_RETURN_IN_MEMORY): Likewise.
(TARGET_SETUP_INCOMING_VARARGS): Likewise.
(TARGET_STRICT_ARGUMENT_NAMING): Likewise.
(iq2000_return_in_memory): Likewise.
(iq2000_setup_incoming_varargs): Make it static. Receive the
first argument by reference.
* config/iq2000/iq2000.h (PROMOTE_FUNCTION_ARGS): Remove.
(PROMOTE_FUNCTION_RETURN): Likewise.
(PROMOTE_PROTOTYPES): Likewise.
(RETURN_IN_MEMORY): Likewise.
(STRUCT_VALUE): Likewise.
(SETUP_INCOMING_VARARGS): Likewise.
(STRICT_ARGUMENT_NAMING): Likewise.
2004-01-24 James A. Morrison <ja2morri@uwaterloo.ca>
* fixinc/fixinc.c (test_test): Initialize res.

View File

@ -1,5 +1,5 @@
/* Definitions of target machine for GNU compiler for iq2000.
Copyright (C) 2003 Free Software Foundation, Inc.
Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@ -38,7 +38,6 @@ extern int iq2000_can_use_return_insn (void);
extern int function_arg_pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode, tree, int);
extern int iq2000_adjust_insn_length (rtx, int);
extern char * iq2000_output_conditional_branch (rtx, rtx *, int, int, int, int);
extern void iq2000_setup_incoming_varargs (CUMULATIVE_ARGS, int, tree, int*, int);
extern void print_operand_address (FILE *, rtx);
extern void print_operand (FILE *, rtx, int);

View File

@ -1,5 +1,5 @@
/* Subroutines used for code generation on Vitesse IQ2000 processors
Copyright (C) 2003 Free Software Foundation, Inc.
Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@ -163,9 +163,14 @@ static struct machine_function* iq2000_init_machine_status (void);
static void iq2000_select_rtx_section (enum machine_mode, rtx, unsigned HOST_WIDE_INT);
static void iq2000_init_builtins (void);
static rtx iq2000_expand_builtin (tree, rtx, rtx, enum machine_mode, int);
static bool iq2000_return_in_memory (tree, tree);
static void iq2000_setup_incoming_varargs (CUMULATIVE_ARGS *,
enum machine_mode, tree, int *,
int);
static bool iq2000_rtx_costs (rtx, int, int, int *);
static int iq2000_address_cost (rtx);
static void iq2000_select_section (tree, int, unsigned HOST_WIDE_INT);
static bool iq2000_return_in_memory (tree, tree);
#undef TARGET_INIT_BUILTINS
#define TARGET_INIT_BUILTINS iq2000_init_builtins
@ -180,6 +185,23 @@ static void iq2000_select_section (tree, int, unsigned HOST_WIDE_INT);
#undef TARGET_ASM_SELECT_SECTION
#define TARGET_ASM_SELECT_SECTION iq2000_select_section
#undef TARGET_PROMOTE_FUNCTION_ARGS
#define TARGET_PROMOTE_FUNCTION_ARGS hook_bool_tree_true
#undef TARGET_PROMOTE_FUNCTION_RETURN
#define TARGET_PROMOTE_FUNCTION_RETURN hook_bool_tree_true
#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_RETURN_IN_MEMORY
#define TARGET_RETURN_IN_MEMORY iq2000_return_in_memory
#undef TARGET_SETUP_INCOMING_VARARGS
#define TARGET_SETUP_INCOMING_VARARGS iq2000_setup_incoming_varargs
#undef TARGET_STRICT_ARGUMENT_NAMING
#define TARGET_STRICT_ARGUMENT_NAMING hook_bool_CUMULATIVE_ARGS_true
struct gcc_target targetm = TARGET_INITIALIZER;
/* Return 1 if OP can be used as an operand where a register or 16 bit unsigned
@ -2642,8 +2664,8 @@ iq2000_function_value (tree valtype, tree func ATTRIBUTE_UNUSED)
enum machine_mode mode = TYPE_MODE (valtype);
int unsignedp = TREE_UNSIGNED (valtype);
/* Since we define PROMOTE_FUNCTION_RETURN, we must promote the mode
just as PROMOTE_MODE does. */
/* Since we define TARGET_PROMOTE_FUNCTION_RETURN that returns true,
we must promote the mode just as PROMOTE_MODE does. */
mode = promote_mode (valtype, mode, &unsignedp, 1);
return gen_rtx_REG (mode, reg);
@ -3262,20 +3284,28 @@ iq2000_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
return NULL_RTX;
}
void
iq2000_setup_incoming_varargs (CUMULATIVE_ARGS cum, int mode ATTRIBUTE_UNUSED,
static bool
iq2000_return_in_memory (tree type, tree fntype ATTRIBUTE_UNUSED)
{
return ((int_size_in_bytes (type) > (2 * UNITS_PER_WORD))
|| (int_size_in_bytes (type) == -1));
}
static void
iq2000_setup_incoming_varargs (CUMULATIVE_ARGS *cum,
enum machine_mode mode ATTRIBUTE_UNUSED,
tree type ATTRIBUTE_UNUSED, int * pretend_size,
int no_rtl)
{
unsigned int iq2000_off = (! (cum).last_arg_fp);
unsigned int iq2000_fp_off = ((cum).last_arg_fp);
unsigned int iq2000_off = ! cum->last_arg_fp;
unsigned int iq2000_fp_off = cum->last_arg_fp;
if (((cum).arg_words < MAX_ARGS_IN_REGISTERS - iq2000_off))
if ((cum->arg_words < MAX_ARGS_IN_REGISTERS - iq2000_off))
{
int iq2000_save_gp_regs
= MAX_ARGS_IN_REGISTERS - (cum).arg_words - iq2000_off;
= MAX_ARGS_IN_REGISTERS - cum->arg_words - iq2000_off;
int iq2000_save_fp_regs
= (MAX_ARGS_IN_REGISTERS - (cum).fp_arg_words - iq2000_fp_off);
= (MAX_ARGS_IN_REGISTERS - cum->fp_arg_words - iq2000_fp_off);
if (iq2000_save_gp_regs < 0)
iq2000_save_gp_regs = 0;
@ -3287,7 +3317,7 @@ iq2000_setup_incoming_varargs (CUMULATIVE_ARGS cum, int mode ATTRIBUTE_UNUSED,
if (! (no_rtl))
{
if ((cum).arg_words < MAX_ARGS_IN_REGISTERS - iq2000_off)
if (cum->arg_words < MAX_ARGS_IN_REGISTERS - iq2000_off)
{
rtx ptr, mem;
ptr = plus_constant (virtual_incoming_args_rtx,
@ -3295,7 +3325,7 @@ iq2000_setup_incoming_varargs (CUMULATIVE_ARGS cum, int mode ATTRIBUTE_UNUSED,
* UNITS_PER_WORD));
mem = gen_rtx_MEM (BLKmode, ptr);
move_block_from_reg
((cum).arg_words + GP_ARG_FIRST + iq2000_off,
(cum->arg_words + GP_ARG_FIRST + iq2000_off,
mem,
iq2000_save_gp_regs);
}

View File

@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler.
Vitesse IQ2000 processors
Copyright (C) 2003 Free Software Foundation, Inc.
Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@ -155,10 +155,6 @@ extern int target_flags;
&& GET_MODE_SIZE (MODE) < 4) \
(MODE) = SImode;
#define PROMOTE_FUNCTION_ARGS
#define PROMOTE_FUNCTION_RETURN
#define PARM_BOUNDARY 32
#define STACK_BOUNDARY 64
@ -427,8 +423,6 @@ enum reg_class
/* Passing Function Arguments on the Stack. */
#define PROMOTE_PROTOTYPES 1
/* #define PUSH_ROUNDING(BYTES) 0 */
#define ACCUMULATE_OUTGOING_ARGS 1
@ -520,15 +514,7 @@ typedef struct iq2000_args
/* How Large Values are Returned. */
#define RETURN_IN_MEMORY(TYPE) \
(((int_size_in_bytes (TYPE) \
> (2 * UNITS_PER_WORD)) \
|| (int_size_in_bytes (TYPE) == -1)))
#define DEFAULT_PCC_STRUCT_RETURN 0
#define STRUCT_VALUE 0
/* Function Entry and Exit. */
@ -557,11 +543,6 @@ typedef struct iq2000_args
/* Implementing the Varargs Macros. */
#define SETUP_INCOMING_VARARGS(CUM,MODE,TYPE,PRETEND_SIZE,NO_RTL) \
iq2000_setup_incoming_varargs (CUM,MODE,TYPE,&PRETEND_SIZE,NO_RTL);
#define STRICT_ARGUMENT_NAMING 1
#define EXPAND_BUILTIN_VA_START(valist, nextarg) \
iq2000_va_start (valist, nextarg)