summaryrefslogtreecommitdiff
path: root/gcc/ginclude/varargs.h
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1997-04-02 01:33:45 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1997-04-02 01:33:45 +0000
commitbb4959a8e67515955d1650c172a8d2bb4326aa85 (patch)
treedd8d664c5789730a9a8a40c022140026db3891e9 /gcc/ginclude/varargs.h
parent949a9cb50645707d886f64c9bf63511973ada4c2 (diff)
downloadgcc-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/varargs.h')
-rw-r--r--gcc/ginclude/varargs.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/ginclude/varargs.h b/gcc/ginclude/varargs.h
index 4f3b8a3a538..c8fa2059deb 100644
--- a/gcc/ginclude/varargs.h
+++ b/gcc/ginclude/varargs.h
@@ -42,6 +42,9 @@
#ifdef __sh__
#include "va-sh.h"
#else
+#ifdef __mn10300__
+#include "va-mn10300.h"
+#else
#ifdef __NeXT__
@@ -100,7 +103,7 @@ typedef void *__gnuc_va_list;
(((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
#endif
-#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)), \
@@ -117,6 +120,7 @@ typedef void *__gnuc_va_list;
/* Copy __gnuc_va_list into another variable of this type. */
#define __va_copy(dest, src) (dest) = (src)
+#endif /* not mn10300 */
#endif /* not sh */
#endif /* not powerpc with V.4 calling sequence */
#endif /* not h8300 */