Hi,
Its current setting is 128. It originally had been 64 and was bumped to 128
in 2001 when Altivec support was added; yet:
aix.h:
/* AIX does not support Altivec. */
#undef TARGET_ALTIVEC
#define TARGET_ALTIVEC 0
#undef TARGET_ALTIVEC_ABI
#define TARGET_ALTIVEC_ABI 0
That's problematic (in particular for Ada) because nothing is 128-bit aligned
on AIX 32-bit. The stack is not:
rs6000.h:
/* Boundary (in *bits*) on which stack pointer should be aligned. */
#define STACK_BOUNDARY \
((TARGET_32BIT && !TARGET_ALTIVEC && !TARGET_ALTIVEC_ABI) ? 64 : 128)
The sections are not either:
xcoff.h:
/* Output before writable data.
Align entire section to BIGGEST_ALIGNMENT. */
#define DATA_SECTION_ASM_OP "\t.csect .data[RW],3"
rs6000.c:
/* A get_unnamed_decl callback, used for read-only sections. PTR
points to the section string variable. */
static void
rs6000_xcoff_output_readonly_section_asm_op (const void *directive)
{
fprintf (asm_out_file, "\t.csect %s[RO],3\n",
*(const char *const *) directive);
}
/* Likewise for read-write sections. */
static void
rs6000_xcoff_output_readwrite_section_asm_op (const void *directive)
{
fprintf (asm_out_file, "\t.csect %s[RW],3\n",
*(const char *const *) directive);
}
As a result, the Ada compiler cannot pass the ACATS testsuite on AIX 32-bit.
We therefore are proposing to revert to the pre-Altivec setting.
--
Eric Botcazou