https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69614
Vladimir Makarov <vmakarov at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |vmakarov at gcc dot gnu.org --- Comment #21 from Vladimir Makarov <vmakarov at gcc dot gnu.org> --- (In reply to Bernd Schmidt from comment #19) > (In reply to Jakub Jelinek from comment #16) > > insn 146 is the pre-reload first xor, insn 701 is storing of the result into > > the [sp, #16] memory slot, but the insn 659 inserted during LRA is just > > weird. > > There is no corresponding clobber in *.ira at this point > > This is left over from an intermediate state in LRA, where we create a new > TImode pseudo in split_if_necessary. Essentially (you probably have > different register numbers): > > (set (subreg:SI (reg:TI 207) 0) something) > > ;; inserted by LRA, expanded into a four-move sequence starting with a > clobber > (set (newreg:TI) (reg:TI 207)) > > (call ...) > > ;; inserted by LRA, similar four-move plus one clobber > (set (reg:TI 207) (newreg:TI)) > > (set (subreg:SI (reg:TI 207) 4) something else > > Later we remove these moves again, leaving only the clobbers around. I'm not > sure yet whether the clobbers have any bad effect or whether something else > is going on. Bernd, you are very quick. I am still building compiler on an ARM board. I think the clobbers are the problem. They basically says LRA that the pseudo does not live from here back to the bb start. I think if we remove the the clobbers, we fix the bug. Bernd, do you want me to work on the patch. Or you prefer to work on it. If I start on the patch, probably it will be ready on Monday. But you might be even quicker. Ops, I found that you already wrote a comment. Still posting the comment.