diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-04-02 01:33:45 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-04-02 01:33:45 +0000 |
commit | bb4959a8e67515955d1650c172a8d2bb4326aa85 (patch) | |
tree | dd8d664c5789730a9a8a40c022140026db3891e9 /gcc/ginclude/stdarg.h | |
parent | 949a9cb50645707d886f64c9bf63511973ada4c2 (diff) | |
download | gcc-bb4959a8e67515955d1650c172a8d2bb4326aa85.tar.gz |
* ginclude/stdarg.h: Include va-mn10300.h.
* ginclude/varargs.h: Likewise.
* ginclude/va-mn10300.h: New file.
* mn10300/mn10300.c (expand_prologue): If current_function_varargs is
nonzero, then flush d0/d1 back into the stack.
(mn10300_builtin_saveregs): New function.
(function_arg, function_arg_partial_nregs): New functions.
(initial_offset): Tweak now that the RP save area is allocated
and deallocated around each call again.
* mn10300/mn10300.h (FIRST_PARM_OFFSET): Now 4.
(FRAME_POINTER_REQUIRED): Require a frame pointer for all non-leaf
functions.
(REG_PARM_STACK_SPACE): Now 8 bytes.
(FUNCTION_ARG_REGNO_P): Update for new parameter passing conventions.
(CUMULATIVE_ARGS, INIT_CUMULATIVE_ARGS): Likewise.
(FUNCTION_ARG_ADVANCE, FUNCTION_ARG): Likewise.
(FUNCTION_ARG_PARTIAL_NREGS): Likewise.
(TRAMPOLINE_TEMPLATE): Don't clobber d0 anymore.
(TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Corresponding changes.
(EXPAND_BUILTIN_SAVEREGS): Define.
* mn10300/mn10300.md (call, call_value patterns): Allocate and
deallocate a stack slot for the return pointer around each call.
* mn10300/mn10300.h (RTX_COSTS): Refine.
(CASE_VALUES_THRESHHOLD, NO_FUNCTION_CSE): Likewise.
* mn10300/mn10300.c (output_tst): New function.
* mn10300/mn10300.md (movdi, movdf): Improve code to load constants
into registers.
(tst insns): Use output_tst to optimize some cases. Add versions to
encourage more zero extensions instead of sign extensions of HImode
and QImode values.
(divsi3, udivsi3): Remove patterns. Replaced by...
(divmodsi4, udivmodsi4): New expanders/patterns.
(andsi3): Optimize "and" operations with certain constants.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@13827 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ginclude/stdarg.h')
-rw-r--r-- | gcc/ginclude/stdarg.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/ginclude/stdarg.h b/gcc/ginclude/stdarg.h index f817c0b2b78..3b3fdf5cc7f 100644 --- a/gcc/ginclude/stdarg.h +++ b/gcc/ginclude/stdarg.h @@ -44,6 +44,9 @@ #ifdef __sh__ #include "va-sh.h" #else +#ifdef __mn10300__ +#include "va-mn10300.h" +#else /* Define __gnuc_va_list. */ @@ -81,7 +84,7 @@ void va_end (__gnuc_va_list); /* Defined in libgcc.a */ /* We cast to void * and then to TYPE * because this avoids a warning about increasing the alignment requirement. */ -#if defined (__arm__) || defined (__i386__) || defined (__i860__) || defined (__ns32000__) || defined (__vax__) || defined (__mn10300__) +#if defined (__arm__) || defined (__i386__) || defined (__i860__) || defined (__ns32000__) || defined (__vax__) /* This is for little-endian machines; small args are padded upward. */ #define va_arg(AP, TYPE) \ (AP = (__gnuc_va_list) ((char *) (AP) + __va_rounded_size (TYPE)), \ @@ -100,6 +103,7 @@ void va_end (__gnuc_va_list); /* Defined in libgcc.a */ #endif /* _STDARG_H */ +#endif /* not mn10300 */ #endif /* not sh */ #endif /* not powerpc with V.4 calling sequence */ #endif /* not h8300 */ |