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