This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PowerPC64 alignment of long doubles
- From: Alan Modra <amodra at bigpond dot net dot au>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 16 Sep 2003 12:06:03 +0930
- Subject: PowerPC64 alignment of long doubles
The PowerPC64 Linux ABI says "The required alignment of a double or long
double field is word, not doubleword or quadword as might be expected
from the size of the field."
and also
"Note: When compared to the 32-bit PowerPC Processor Supplement, the
size and alignment of long has changed, and the alignment of double
and long double has changed. A compiler may provide options to use
different sizes and alignments; however, any object compiled with
those options will not conform to the 64-bit PowerPC Processor
Supplement."
We currently have this wrong for long double, and I'll shortly be
sending a patch to correct the situation. Meanwhile, the following
fixes the testsuite to pass with both current and corrected alignment
of long doubles.
* gcc.dg/ppc-ldstruct.c: Use -malign-natural on powerpc64*-*-*.
OK mainline? To make this change on the 3.3 branch, I'd also need to
backport -malign-natural support.
Index: gcc/testsuite/gcc.dg/ppc-ldstruct.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/ppc-ldstruct.c,v
retrieving revision 1.1
diff -u -p -r1.1 ppc-ldstruct.c
--- gcc/testsuite/gcc.dg/ppc-ldstruct.c 9 Mar 2002 19:14:15 -0000 1.1
+++ gcc/testsuite/gcc.dg/ppc-ldstruct.c 16 Sep 2003 02:31:29 -0000
@@ -1,8 +1,10 @@
/* { dg-do run { target powerpc*-*-eabi* powerpc*-*-elf* powerpc*-*-linux* } } */
/* { dg-options "-O -mlong-double-128" } */
+/* { dg-options "-malign-natural" { target powerpc64*-*-* } } */
/* SVR4 and EABI both specify that 'long double' is aligned to a 128-bit
- boundary in structures. */
+ boundary in structures. However, this is not true for powerpc64-linux
+ where long doubles are aligned to a word boundary. */
struct {
int x;
--
Alan Modra
IBM OzLabs - Linux Technology Centre