https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95267
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|WAITING |RESOLVED Resolution|--- |INVALID --- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The internals documentation documents this even, read: https://gcc.gnu.org/onlinedocs/gccint/RTL-Template.html#index-match_005fdup >From that: Note that match_dup should not be used to tell the compiler that a particular register is being used for two operands (example: add that adds one register to another; the second register is both an input operand and the output operand). Use a matching constraint (see Simple Constraints) for those.