m32r-protos.h (m32r_pass_by_reference): Declare.
* config/m32r/m32r-protos.h (m32r_pass_by_reference): Declare. * config/m32r/m32r.c (m32r_pass_by_reference): New fn. (m32r_va_arg): Use it. * config/m32r/m32r.h (FUNCTION_ARG_PASS_BY_REFERENCE): Ditto. (RETURN_IN_MEMORY): Ditto. Co-Authored-By: Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com> From-SVN: r67906
This commit is contained in:
parent
4581c67856
commit
d88e80e622
@ -1,3 +1,12 @@
|
||||
2003-06-13 Doug Evans <dje@sebabeach.org>
|
||||
Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
|
||||
|
||||
* config/m32r/m32r-protos.h (m32r_pass_by_reference): Declare.
|
||||
* config/m32r/m32r.c (m32r_pass_by_reference): New fn.
|
||||
(m32r_va_arg): Use it.
|
||||
* config/m32r/m32r.h (FUNCTION_ARG_PASS_BY_REFERENCE): Ditto.
|
||||
(RETURN_IN_MEMORY): Ditto.
|
||||
|
||||
2003-06-13 Nathanael Nerode <neroden@gcc.gnu.org>
|
||||
|
||||
* c-typeck.c: Remove #if 0 clauses.
|
||||
|
@ -93,6 +93,7 @@ extern int reg_or_zero_operand PARAMS ((rtx, Mmode));
|
||||
|
||||
#ifdef TREE_CODE
|
||||
extern struct rtx_def * m32r_va_arg PARAMS ((tree, tree));
|
||||
extern int m32r_pass_by_reference PARAMS ((tree));
|
||||
#endif /* TREE_CODE */
|
||||
#endif /* RTX_CODE */
|
||||
|
||||
|
@ -1002,6 +1002,21 @@ large_insn_p (op, mode)
|
||||
return get_attr_length (op) != 2;
|
||||
}
|
||||
|
||||
/* Return non-zero if TYPE must be passed or returned in memory.
|
||||
The m32r treats both directions the same so we handle both directions
|
||||
in this function. */
|
||||
|
||||
int
|
||||
m32r_pass_by_reference (type)
|
||||
tree type;
|
||||
{
|
||||
int size = int_size_in_bytes (type);
|
||||
|
||||
if (size < 0 || size > 8)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Comparisons. */
|
||||
|
||||
@ -1425,7 +1440,7 @@ m32r_va_arg (valist, type)
|
||||
size = int_size_in_bytes (type);
|
||||
rsize = (size + UNITS_PER_WORD - 1) & -UNITS_PER_WORD;
|
||||
|
||||
if (size > 8)
|
||||
if (m32r_pass_by_reference (type))
|
||||
{
|
||||
tree type_ptr, type_ptr_ptr;
|
||||
|
||||
|
@ -1134,7 +1134,7 @@ M32R_STACK_ALIGN (current_function_outgoing_args_size)
|
||||
appropriate for passing a pointer to that type. */
|
||||
/* All arguments greater than 8 bytes are passed this way. */
|
||||
#define FUNCTION_ARG_PASS_BY_REFERENCE(CUM, MODE, TYPE, NAMED) \
|
||||
((TYPE) && int_size_in_bytes (TYPE) > 8)
|
||||
((TYPE) && m32r_pass_by_reference (TYPE))
|
||||
|
||||
/* Update the data in CUM to advance over an argument
|
||||
of mode MODE and data type TYPE.
|
||||
@ -1210,8 +1210,7 @@ M32R_STACK_ALIGN (current_function_outgoing_args_size)
|
||||
to return the function value in memory, just as large structures are
|
||||
always returned. Here TYPE will be a C expression of type `tree',
|
||||
representing the data type of the value. */
|
||||
#define RETURN_IN_MEMORY(TYPE) \
|
||||
(int_size_in_bytes (TYPE) > 8)
|
||||
#define RETURN_IN_MEMORY(TYPE) m32r_pass_by_reference (TYPE)
|
||||
|
||||
/* Tell GCC to use RETURN_IN_MEMORY. */
|
||||
#define DEFAULT_PCC_STRUCT_RETURN 0
|
||||
|
Loading…
Reference in New Issue
Block a user