aix.h (AGGREGATE_PADDING_FIXED): Define.

* config/rs6000/aix.h (AGGREGATE_PADDING_FIXED): Define.
	(AGGREGATES_PAD_UPWARD_ALWAYS): Define.
	(MUST_PASS_IN_STACK): Define.
	(BLOCK_REG_PADDING): Define.

From-SVN: r69570
This commit is contained in:
David Edelsohn 2003-07-18 21:42:29 +00:00 committed by David Edelsohn
parent 790199856a
commit 8d05ebaa24
2 changed files with 30 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2003-07-18 David Edelsohn <edelsohn@gnu.org>
* config/rs6000/aix.h (AGGREGATE_PADDING_FIXED): Define.
(AGGREGATES_PAD_UPWARD_ALWAYS): Define.
(MUST_PASS_IN_STACK): Define.
(BLOCK_REG_PADDING): Define.
2003-07-18 Richard Henderson <rth@redhat.com>
* cfgrtl.c (force_nonfallthru_and_redirect): Use tablejump_p

View File

@ -149,6 +149,29 @@
? MAX (MAX ((COMPUTED), (SPECIFIED)), 64) \
: MAX ((COMPUTED), (SPECIFIED)))
/* The AIX ABI isn't explicit on whether aggregates smaller than a
word/doubleword should be padded upward or downward. One could
reasonably assume that they follow the normal rules for structure
layout treating the parameter area as any other block of memory,
then map the reg param area to registers, i.e., pad upward, which
is the way IBM Compilers for AIX behave.
Setting both of the following defines results in this behaviour. */
#define AGGREGATE_PADDING_FIXED 1
#define AGGREGATES_PAD_UPWARD_ALWAYS 1
/* We don't want anything in the reg parm area being passed on the
stack. */
#define MUST_PASS_IN_STACK(MODE, TYPE) \
((TYPE) != 0 \
&& (TREE_CODE (TYPE_SIZE (TYPE)) != INTEGER_CST \
|| TREE_ADDRESSABLE (TYPE)))
/* Specify padding for the last element of a block move between
registers and memory. FIRST is nonzero if this is the only
element. */
#define BLOCK_REG_PADDING(MODE, TYPE, FIRST) \
(!(FIRST) ? upward : FUNCTION_ARG_PADDING (MODE, TYPE))
/* Indicate that jump tables go in the text section. */
#define JUMP_TABLES_IN_TEXT_SECTION 1