This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
BIGGEST_ALIGNMENT on AIX 32-bit
- From: Eric Botcazou <ebotcazou at adacore dot com>
- To: gcc at gcc dot gnu dot org
- Date: Sat, 14 Jan 2006 14:31:09 +0100
- Subject: BIGGEST_ALIGNMENT on AIX 32-bit
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