From: J"orn Rennecke Date: Tue, 25 Nov 1997 21:09:44 +0000 (+0000) Subject: va-sh.h (__va_arg_sh1): Define. X-Git-Tag: releases/egcs-1.0.0~64 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=942f225e5ee86a0e322508208471f5b6248da3e6;p=thirdparty%2Fgcc.git va-sh.h (__va_arg_sh1): Define. * va-sh.h (__va_arg_sh1): Define. (va_arg): Use it. SH3E doesn't use any integer registers for subsequent arguments once a non-float value was passed in the stack. * sh.h (PASS_IN_REG_P): Fix SH3E case. From-SVN: r16706 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5d73cfd54f57..2d8cacd1e02f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +Tue Nov 25 10:00:42 1997 J"orn Rennecke + + * va-sh.h (__va_arg_sh1): Define. + (va_arg): Use it. + SH3E doesn't use any integer registers for subsequent arguments + once a non-float value was passed in the stack. + * sh.h (PASS_IN_REG_P): Fix SH3E case. + Tue Nov 25 10:00:42 1997 Richard Henderson (rth@cygnus.com) * alpha.h (CONST_OK_FOR_LETTER): Fix 'L' handling. diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index 5210fdc76b43..2c91182be17b 100644 --- a/gcc/config/sh/sh.h +++ b/gcc/config/sh/sh.h @@ -769,9 +769,16 @@ struct sh_args { This macro is only used in this file. */ #define PASS_IN_REG_P(CUM, MODE, TYPE) \ - (ROUND_REG ((CUM), (MODE)) < NPARM_REGS (MODE) \ - && ((TYPE) == 0 || ! TREE_ADDRESSABLE ((tree)(TYPE))) \ - && (! TARGET_SH3E || (ROUND_REG((CUM), (MODE)) + (GET_MODE_SIZE(MODE)/4) <= NPARM_REGS (MODE)))) + (((TYPE) == 0 || ! TREE_ADDRESSABLE ((tree)(TYPE))) \ + && (TARGET_SH3E \ + ? ((MODE) == BLKmode \ + ? (((CUM).arg_count[(int) SH_ARG_INT] * UNITS_PER_WORD \ + + int_size_in_bytes (TYPE)) \ + <= NPARM_REGS (SImode) * UNITS_PER_WORD) \ + : ((ROUND_REG((CUM), (MODE)) \ + + HARD_REGNO_NREGS (BASE_ARG_REG (MODE), (MODE))) \ + <= NPARM_REGS (MODE))) \ + : ROUND_REG ((CUM), (MODE)) < NPARM_REGS (MODE))) /* Define where to put the arguments to a function. Value is zero to push the argument on the stack,