diff options
| -rw-r--r-- | gcc/ChangeLog | 4 | ||||
| -rw-r--r-- | gcc/config/pa/pa.h | 16 |
2 files changed, 13 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8bb1587..f009143 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Tue Dec 21 07:06:36 1999 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> + + * pa.h (FUNCTION_ARG_BOUNDARY): Never return 0. + 1999-12-21 Michael Hayes <m.hayes@elec.canterbury.ac.nz> * md.texi: Add c4x constraints documentation. diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index 4e5c9ef..1794520 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -1058,13 +1058,15 @@ struct hppa_args {int words, nargs_prototype, indirect; }; bits, of an argument with the specified mode and type. If it is not defined, `PARM_BOUNDARY' is used for all arguments. */ -#define FUNCTION_ARG_BOUNDARY(MODE, TYPE) \ - (((TYPE) != 0) \ - ? (((int_size_in_bytes (TYPE)) + UNITS_PER_WORD - 1) \ - / UNITS_PER_WORD) * BITS_PER_WORD \ - : ((GET_MODE_ALIGNMENT(MODE) <= PARM_BOUNDARY) \ - ? PARM_BOUNDARY \ - : GET_MODE_ALIGNMENT(MODE))) +#define FUNCTION_ARG_BOUNDARY(MODE, TYPE) \ + (((TYPE) != 0) \ + ? ((integer_zerop (TYPE_SIZE (TYPE)) \ + || ! TREE_CONSTANT (TYPE_SIZE (TYPE))) \ + ? BITS_PER_UNIT \ + : (((int_size_in_bytes (TYPE)) + UNITS_PER_WORD - 1) \ + / UNITS_PER_WORD) * BITS_PER_WORD) \ + : ((GET_MODE_ALIGNMENT(MODE) <= PARM_BOUNDARY) \ + ? PARM_BOUNDARY : GET_MODE_ALIGNMENT(MODE))) /* Arguments larger than eight bytes are passed by invisible reference */ |
