https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88592
Bug ID: 88592 Summary: Passing of packed structures on sparc64 different than in clang Product: gcc Version: 8.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: gcc-bugzilla at mkarcher dot dialup.fu-berlin.de Target Milestone: --- As noted while filing a bug on rustc because rustc does not correctly implement the Sparc64 ABI regarding floating point fields of "small" structures, I stumbled across a difference between gcc an clang, as shown in https://github.com/rust-lang/rust/issues/57103 (the important piece is quoted below): struct str3 { float f; // passed in most-significant half of %o0 (gcc) or in %f0 (clang) int i; // passed in least-significant half of %o0 } __attribute__((packed)); Without __attribute__((packed)), clang, gcc and the ABI standard agree to pass f in %f0. The ABI standard doesn't contain anything about packed structures, so I don't see a way to decide whether gcc or clang is right. I report a bug on both products to raise awareness.