From: Jeff Law Date: Mon, 22 Aug 1994 03:15:12 +0000 (-0600) Subject: pa.h (FUNCTION_ARG): Use indirect calling conventions when TARGET_LONG_CALLS is in... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=667f6759471ec04b8911389b717fbc5829cd5a38;p=gcc.git pa.h (FUNCTION_ARG): Use indirect calling conventions when TARGET_LONG_CALLS is in effect. * pa.h (FUNCTION_ARG): Use indirect calling conventions when TARGET_LONG_CALLS is in effect. From-SVN: r7957 --- diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index 8fa04c23e48..bc7624d27e1 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -826,7 +826,9 @@ struct hppa_args {int words, nargs_prototype; }; The caller must make a distinction between calls to explicitly named functions and calls through pointers to functions -- the conventions are different! Calls through pointers to functions only use general - registers for the first four argument words. + registers for the first four argument words. Note the indirect function + calling conventions are in effect during TARGET_LONG_CALLS, but + current_call_is_indirect will not be set in such situations. Of course all this is different for the portable runtime model HP wants everyone to use for ELF. Ugh. Here's a quick description @@ -861,11 +863,13 @@ struct hppa_args {int words, nargs_prototype; }; || !FLOAT_MODE_P (MODE) || (CUM).nargs_prototype > 0) \ ? gen_rtx (REG, (MODE), \ (FUNCTION_ARG_SIZE ((MODE), (TYPE)) > 1 \ - ? (((!current_call_is_indirect || TARGET_PORTABLE_RUNTIME) \ + ? (((!(current_call_is_indirect || TARGET_LONG_CALLS) \ + || TARGET_PORTABLE_RUNTIME) \ && (MODE) == DFmode) \ ? ((CUM).words ? 38 : 34) \ : ((CUM).words ? 23 : 25)) \ - : (((!current_call_is_indirect || TARGET_PORTABLE_RUNTIME) \ + : (((!(current_call_is_indirect || TARGET_LONG_CALLS) \ + || TARGET_PORTABLE_RUNTIME) \ && (MODE) == SFmode) \ ? (32 + 2 * (CUM).words) \ : (27 - (CUM).words - FUNCTION_ARG_SIZE ((MODE), \