RFA: Darwin x86 alignment
Mark Kettenis
mark.kettenis@xs4all.nl
Sat Jul 23 11:56:00 GMT 2005
From: Dale Johannesen <dalej@apple.com>
Date: Thu, 21 Jul 2005 16:56:01 -0700
On x86 currently the alignments of double and long long are linked:
they are either 4 or 8 depending on whether -malign-double is set.
This follows the documentation of -malign-double. But it's wrong for
what we want the Darwin ABI to be: the default should be that double
is 4 bytes and long long is 8 bytes.
I have a strong suspicion there is a reason why the two are linked,
and that that reason is FORTRAN. A lot of FORTRAN code assumes
EQUIVALENCE of floating-point and integer types of equal size. Such
code will in all likelyhood break if those types have different
alignment. For x86 this means that int/float and long long/double
will have to have the same alignment.
If my suspicion is right, I hope this still can be changed. Otherwise
I'm sure a lot of Apple's customers doing scientific computing will be
rather pissed off.
Mark
More information about the Gcc
mailing list