diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1993-04-17 17:40:16 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1993-04-17 17:40:16 -0400 |
commit | 6fb713ceecede5b541b9574713e16fd22e7df59d (patch) | |
tree | f0ddaf3a4e49a250f91de52b712fe0ebcd50360b /gcc/expr.h | |
parent | 67729b992aed9b55b35d140c6415513157f94580 (diff) | |
download | gcc-6fb713ceecede5b541b9574713e16fd22e7df59d.zip gcc-6fb713ceecede5b541b9574713e16fd22e7df59d.tar.gz gcc-6fb713ceecede5b541b9574713e16fd22e7df59d.tar.bz2 |
(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
Diffstat (limited to 'gcc/expr.h')
-rw-r--r-- | gcc/expr.h | 11 |
1 files changed, 4 insertions, 7 deletions
@@ -179,7 +179,7 @@ enum direction {none, upward, downward}; /* Value has this type. */ #define FUNCTION_ARG_PADDING(MODE, TYPE) \ (((MODE) == BLKmode \ ? ((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) \ ? downward : upward) #else @@ -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. 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 #define MUST_PASS_IN_STACK_BAD_PADDING upward #else @@ -227,9 +222,11 @@ enum direction {none, upward, downward}; /* Value has this type. */ && (TREE_CODE (TYPE_SIZE (TYPE)) != INTEGER_CST \ || TREE_ADDRESSABLE (TYPE) \ || ((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) \ == MUST_PASS_IN_STACK_BAD_PADDING)))) -#endif /* Nonzero if type TYPE should be returned in memory. Most machines can use the following default definition. */ |