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.

Reply via email to