diff options
author | kazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-29 01:47:24 +0000 |
---|---|---|
committer | kazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-29 01:47:24 +0000 |
commit | 6aa67e60f25b970aa6019a59e28779bbff9d471d (patch) | |
tree | 649a31561c8b966a2898994f71390a2e593fdbf9 /gcc/config/v850 | |
parent | 322f231af105e7bc06f4bb06b26fae5f9afecadb (diff) | |
download | gcc-6aa67e60f25b970aa6019a59e28779bbff9d471d.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76831 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/v850')
-rw-r--r-- | gcc/config/v850/v850.c | 37 | ||||
-rw-r--r-- | gcc/config/v850/v850.h | 20 |
2 files changed, 38 insertions, 19 deletions
diff --git a/gcc/config/v850/v850.c b/gcc/config/v850/v850.c index 4de480a422c..103534798bc 100644 --- a/gcc/config/v850/v850.c +++ b/gcc/config/v850/v850.c @@ -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); +} diff --git a/gcc/config/v850/v850.h b/gcc/config/v850/v850.h index ff8c274f598..4233d7258d0 100644 --- a/gcc/config/v850/v850.h +++ b/gcc/config/v850/v850.h @@ -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 |