Commit 6fb713ce by Richard Kenner

(FUNCTION_ARG_PADDING): Add parens to make clearer.

(MUST_PASS_IN_STACK): Don't allow machine to override (none currently do).
Don't force in stack if wrong padding when padding isn't needed.

From-SVN: r4172
parent 67729b99
...@@ -179,7 +179,7 @@ enum direction {none, upward, downward}; /* Value has this type. */ ...@@ -179,7 +179,7 @@ enum direction {none, upward, downward}; /* Value has this type. */
#define FUNCTION_ARG_PADDING(MODE, TYPE) \ #define FUNCTION_ARG_PADDING(MODE, TYPE) \
(((MODE) == BLKmode \ (((MODE) == BLKmode \
? ((TYPE) && TREE_CODE (TYPE_SIZE (TYPE)) == INTEGER_CST \ ? ((TYPE) && TREE_CODE (TYPE_SIZE (TYPE)) == INTEGER_CST \
&& int_size_in_bytes (TYPE) < PARM_BOUNDARY / BITS_PER_UNIT) \ && int_size_in_bytes (TYPE) < (PARM_BOUNDARY / BITS_PER_UNIT)) \
: GET_MODE_BITSIZE (MODE) < PARM_BOUNDARY) \ : GET_MODE_BITSIZE (MODE) < PARM_BOUNDARY) \
? downward : upward) ? downward : upward)
#else #else
...@@ -211,11 +211,6 @@ enum direction {none, upward, downward}; /* Value has this type. */ ...@@ -211,11 +211,6 @@ enum direction {none, upward, downward}; /* Value has this type. */
So a value padded in memory at the upper end can't go in a register. So a value padded in memory at the upper end can't go in a register.
For a little-endian machine, the reverse is true. */ For a little-endian machine, the reverse is true. */
/* ??? Perhaps later rename this to FUNCTION_ARG_MUST_PASS_IN_STACK?
(although it is a little long). */
#ifndef MUST_PASS_IN_STACK
#if BYTES_BIG_ENDIAN #if BYTES_BIG_ENDIAN
#define MUST_PASS_IN_STACK_BAD_PADDING upward #define MUST_PASS_IN_STACK_BAD_PADDING upward
#else #else
...@@ -227,9 +222,11 @@ enum direction {none, upward, downward}; /* Value has this type. */ ...@@ -227,9 +222,11 @@ enum direction {none, upward, downward}; /* Value has this type. */
&& (TREE_CODE (TYPE_SIZE (TYPE)) != INTEGER_CST \ && (TREE_CODE (TYPE_SIZE (TYPE)) != INTEGER_CST \
|| TREE_ADDRESSABLE (TYPE) \ || TREE_ADDRESSABLE (TYPE) \
|| ((MODE) == BLKmode \ || ((MODE) == BLKmode \
&& ! ((TYPE) != 0 && TREE_CODE (TYPE_SIZE (TYPE)) == INTEGER_CST \
&& 0 == (int_size_in_bytes (TYPE) \
% (PARM_BOUNDARY / BITS_PER_UNIT))) \
&& (FUNCTION_ARG_PADDING (MODE, TYPE) \ && (FUNCTION_ARG_PADDING (MODE, TYPE) \
== MUST_PASS_IN_STACK_BAD_PADDING)))) == MUST_PASS_IN_STACK_BAD_PADDING))))
#endif
/* Nonzero if type TYPE should be returned in memory. /* Nonzero if type TYPE should be returned in memory.
Most machines can use the following default definition. */ Most machines can use the following default definition. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment