https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70416
--- Comment #14 from Oleg Endo <olegendo at gcc dot gnu.org> --- (In reply to Kazumoto Kojima from comment #12) > > (insn 516 508 510 18 (set (reg:SI 0 r0) > (plus:SI (reg:SI 2 r2) > (const_int 4 [0x4]))) xxx.i:100 67 {*addsi3} > (nil)) > > which is invalid. I haven't checked the details... but we've added those "special" addsi patterns and the above seems to be covered by at least one of them. Maybe at that stage in the reload code it will end up using the last *addsi3 pattern and not try to look for a new pattern in the .md when it wants to change it. In other words, maybe it'll help if the *addsi3 patterns are merged into a single pattern somehow. I'll give it a try...