diff options
author | Jeff Law <law@gcc.gnu.org> | 1994-08-21 21:15:12 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1994-08-21 21:15:12 -0600 |
commit | 667f6759471ec04b8911389b717fbc5829cd5a38 (patch) | |
tree | 2380458515d53483c76c231e6ef9f8fec48a0888 | |
parent | 208dc1d8f12bb98e05359a56dde0a3c7f05a1cf3 (diff) | |
download | gcc-667f6759471ec04b8911389b717fbc5829cd5a38.zip gcc-667f6759471ec04b8911389b717fbc5829cd5a38.tar.gz gcc-667f6759471ec04b8911389b717fbc5829cd5a38.tar.bz2 |
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
-rw-r--r-- | gcc/config/pa/pa.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index 8fa04c2..bc7624d 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), \ |