https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69671
--- Comment #10 from Kirill Yukhin <kyukhin at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #9) > But something like that might remove the flexibility from the register > allocator. > > Wonder why the RA in this case doesn't see that the value loaded into that > pseudo register is CONST0_RTX which satisfies the C constraint and doesn't > undo CSE (rematerialize) in that case if it doesn't have that value already > loaded in the matching register to the output one. Then I see two options: 1. Split all patterns into match_dup and 0_operand by hand 2. Implement dedicated subst for such a patterns which will do p.1 while processing MD. Not sure it'll be easy