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
This commit is contained in:
Jeff Law 1994-08-21 21:15:12 -06:00
parent 208dc1d8f1
commit 667f675947
1 changed files with 7 additions and 3 deletions

View File

@ -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), \