https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83855
Segher Boessenkool <segher at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED CC| |segher at gcc dot gnu.org Resolution|--- |INVALID --- Comment #3 from Segher Boessenkool <segher at gcc dot gnu.org> --- The internals manual explains this: Note that @code{match_dup} should not be used to tell the compiler that a particular register is being used for two operands (example: @code{add} that adds one register to another; the second register is both an input operand and the output operand). Use a matching constraint (@pxref{Simple Constraints}) for those. @code{match_dup} is for the cases where one operand is used in two places in the template, such as an instruction that computes both a quotient and a remainder, where the opcode takes two input operands but the RTL template has to refer to each of those twice; once for the quotient pattern and once for the remainder pattern.