https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80754
wilco at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2017-05-15 CC| |wilco at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #2 from wilco at gcc dot gnu.org --- (In reply to Richard Earnshaw from comment #1) > I suspect this has just revealed a latent issue. > > How can it be right for the register allocator to assign the same register > to *two* different output operands? The problem is that lra-remat doesn't check whether scratch registers have been allocated to the same register as the destination when rematerializing an instruction into a move: smull r8, r2, r1, r3 (r8 is a scratch, r2 is dest) mov r8, r2 -> smull r8, r8, r1, r3