http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52242
Bug #: 52242 Summary: [4.7 regression] libgomp.c/atomic-2.c failure on s390x Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: tree-optimization AssignedTo: unassig...@gcc.gnu.org ReportedBy: kreb...@gcc.gnu.org 181748 rth /* ??? Assume BIGGEST_ALIGNMENT *is* aligned. */ 181748 rth if (exact_log2 (align) >= index 181748 rth || align * BITS_PER_UNIT >= BIGGEST_ALIGNMENT) That broke the atomic-2.c libgomp testcase on s390x. We have BIGGEST_ALIGNMENT of 64. A 128 bit long double does not need to be aligned better than 64 bit in memory. However, the 128bit compare and swap instruction we have requires the operands to be naturally aligned. In the testcase a compare and swap double instruction is used on a long double value which is only 8 byte aligned in memory.