[Bug target/47120] New: -malign-double does not align doubles in function calls
pip88nl at gmail dot com
gcc-bugzilla@gcc.gnu.org
Wed Dec 29 15:54:00 GMT 2010
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47120
Summary: -malign-double does not align doubles in function
calls
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: pip88nl@gmail.com
According to the gcc manual, -malign-double creates object code with an ABI
that is incompatible to code that was not compiled with that switch. With this
switch, structs containing doubles are aligned correctly (according to double's
alignment requirements) but doubles passed to functions are not. E.g.:
void foo (int i, double d);
int main () {
foo (1, 2);
return 0;
}
On x86, this will emit code storing the double value of 2.0 to a word-aligned
stack location, not a double-word aligned location, as the manual implies.
I suppose the reason for not aligning doubles on a two word boundary in this
instance is that it would, in addition to the struct ABI, break the x86 calling
convention. However, not aligning the double correctly will make code fail that
requires aligned access.
More information about the Gcc-bugs
mailing list