http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57744

            Bug ID: 57744
           Summary: Power8 support has problems with quad word atomic
                    instructions
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: meissner at gcc dot gnu.org

The lqarx and stqcx. instructions will sometimes generate code using an
odd/even register combination.  The assembler complains about this, since only
even/odd registers can be used.

This is due to the atomic support for quad using PTImode to force allocation of
an even/odd register pair.  However, since MODES_TIEABLE_P(PTImode, TImode)
returns 1, the compiler felt it could tie together the value originally in a
TImode register with the PTImode register, and an odd/even TImode had already
been allocated.

In looking at MODES_TIEABLE_P, I feel that small integer modes (QImode, HImode,
SImode) should not be tied with larger modes like DImode, since DImode can go
in floating point registers, but SImode can't.

Reply via email to