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

Peter Bergner <bergner at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED

--- Comment #3 from Peter Bergner <bergner at gcc dot gnu.org> ---
The problem is that hardreg 62 (aka FPR30/VSR30) is not set in
CALL_USED_REGISTERS[] because the ABI states it is non-volatile.  But it is
only non-volatile in S[DF]mode and D[DF]mode modes.  It is volatile in V2DFmode
or any other mode where that uses doubleword 1 of the VSR.

Since hardreg 62 is not mentioned in CALL_USED_REGISTERS, df does not detect
the dependency between the xxpermdi setting hardreg 62 and the log() call that
clobbers half of it.  With no dependency between the insns, sched2 goes ahead
and moves the xxpermdi above the call.

Reply via email to