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: unassig...@gcc.gnu.org ReportedBy: pip8...@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.