aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/pa/pa.h16
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 */