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.