v850.c (TARGET_PROMOTE_PROTOTYPES): New.

* config/v850/v850.c (TARGET_PROMOTE_PROTOTYPES): New.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_SETUP_INCOMING_VARARGS): Likewise.
	(v850_return_in_memory): Likewise.
	(v850_setup_incoming_varargs): Likewise.
	* config/v850/v850.h (PROMOTE_PROTOTYPES): Remove.
	(SETUP_INCOMING_VARARGS): Likewise.
	(RETURN_IN_MEMORY): Likewise.
	(STRUCT_VALUE): Likewise.

From-SVN: r76831
This commit is contained in:
Kazu Hirata 2004-01-29 01:47:24 +00:00 committed by Kazu Hirata
parent 0fd818e75b
commit fb7bc7fb8a
3 changed files with 51 additions and 19 deletions

View File

@ -1,3 +1,16 @@
2004-01-28 Kazu Hirata <kazu@cs.umass.edu>
* config/v850/v850.c (TARGET_PROMOTE_PROTOTYPES): New.
(TARGET_STRUCT_VALUE_RTX): Likewise.
(TARGET_RETURN_IN_MEMORY): Likewise.
(TARGET_SETUP_INCOMING_VARARGS): Likewise.
(v850_return_in_memory): Likewise.
(v850_setup_incoming_varargs): Likewise.
* config/v850/v850.h (PROMOTE_PROTOTYPES): Remove.
(SETUP_INCOMING_VARARGS): Likewise.
(RETURN_IN_MEMORY): Likewise.
(STRUCT_VALUE): Likewise.
2004-01-28 Kazu Hirata <kazu@cs.umass.edu>
* config/fr30/fr30.c (TARGET_PROMOTE_PROTOTYPES): New.

View File

@ -1,5 +1,5 @@
/* Subroutines for insn-output.c for NEC V850 series
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Contributed by Jeff Law (law@cygnus.com).
@ -64,6 +64,9 @@ static void v850_insert_attributes (tree, tree *);
static void v850_select_section (tree, int, unsigned HOST_WIDE_INT);
static void v850_encode_data_area (tree, rtx);
static void v850_encode_section_info (tree, rtx, int);
static bool v850_return_in_memory (tree, tree);
static void v850_setup_incoming_varargs (CUMULATIVE_ARGS *, enum machine_mode,
tree, int *, int);
/* Information about the various small memory areas. */
struct small_memory_info small_memory[ (int)SMALL_MEMORY_max ] =
@ -116,6 +119,17 @@ static int v850_interrupt_p = FALSE;
#undef TARGET_MACHINE_DEPENDENT_REORG
#define TARGET_MACHINE_DEPENDENT_REORG v850_reorg
#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 v850_return_in_memory
#undef TARGET_SETUP_INCOMING_VARARGS
#define TARGET_SETUP_INCOMING_VARARGS v850_setup_incoming_varargs
struct gcc_target targetm = TARGET_INITIALIZER;
/* Sometimes certain combinations of command options do not make
@ -3397,3 +3411,24 @@ v850_select_section (tree exp,
else
readonly_data_section ();
}
/* Worker function for TARGET_RETURN_IN_MEMORY. */
static bool
v850_return_in_memory (tree type, tree fntype ATTRIBUTE_UNUSED)
{
/* Return values > 8 bytes in length in memory. */
return int_size_in_bytes (type) > 8 || TYPE_MODE (type) == BLKmode;
}
/* Worker function for TARGET_SETUP_INCOMING_VARARGS. */
static void
v850_setup_incoming_varargs (CUMULATIVE_ARGS *ca,
enum machine_mode mode ATTRIBUTE_UNUSED,
tree type ATTRIBUTE_UNUSED,
int *pretend_arg_size ATTRIBUTE_UNUSED,
int second_time ATTRIBUTE_UNUSED)
{
ca->anonymous_args = (!TARGET_GHS ? 1 : 0);
}

View File

@ -1,5 +1,5 @@
/* Definitions of target machine for GNU compiler. NEC V850 series
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Contributed by Jeff Law (law@cygnus.com).
@ -124,7 +124,7 @@ extern int target_flags;
as GHS. We don't have enough documentation on their conventions
to be compatible.
* Tests of SETUP_INCOMING_VARARGS need to be made runtime checks
* Tests of TARGET_SETUP_INCOMING_VARARGS need to be made runtime checks
since it depends on TARGET_GHS. */
#define TARGET_GHS (target_flags & MASK_GHS)
@ -707,9 +707,6 @@ enum reg_class
abort (); \
}
/* A guess for the V850. */
#define PROMOTE_PROTOTYPES 1
/* Keep the stack pointer constant throughout the function. */
#define ACCUMULATE_OUTGOING_ARGS 1
@ -776,10 +773,6 @@ struct cum_arg { int nbytes; int anonymous_args; };
space allocated by the caller. */
#define OUTGOING_REG_PARM_STACK_SPACE
/* Do any setup necessary for varargs/stdargs functions. */
#define SETUP_INCOMING_VARARGS(CUM, MODE, TYPE, PAS, SECOND) \
(CUM).anonymous_args = (!TARGET_GHS ? 1 : 0);
/* Implement `va_arg'. */
#define EXPAND_BUILTIN_VA_ARG(valist, type) \
v850_va_arg (valist, type)
@ -812,16 +805,7 @@ struct cum_arg { int nbytes; int anonymous_args; };
#define FUNCTION_VALUE_REGNO_P(N) ((N) == 10)
/* Return values > 8 bytes in length in memory. */
#define DEFAULT_PCC_STRUCT_RETURN 0
#define RETURN_IN_MEMORY(TYPE) \
(int_size_in_bytes (TYPE) > 8 || TYPE_MODE (TYPE) == BLKmode)
/* Register in which address to store a structure value
is passed to a function. On the V850 it's passed as
the first parameter. */
#define STRUCT_VALUE 0
/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
the stack pointer does not matter. The value is tested only in