https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120070
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- This is (insn 15 14 82 4 (parallel [ (set (reg:DI 48 [ _38 ]) (minus:DI (subreg:DI (reg:SI 32 [ _2 ]) 0) (subreg:DI (reg:SI 50 [ _35 ]) 0))) (clobber (scratch:SI)) ]) "pr120070.c":11:36 175 {subdi3} (expr_list:REG_DEAD (reg:SI 50 [ _35 ]) (nil))) during IRA, but reload turns that into (insn 15 98 99 4 (parallel [ (set (reg:DI 6 %d6) (minus:DI (reg:DI 6 %d6) (reg:DI -1 [+-4 ]))) (clobber (scratch:SI)) ]) "pr120070.c":11:36 175 {subdi3} (nil)) which is invalid, there is no register -1. Compiles fine with -Os -mlra. Don't know if anybody will spend time on reload when it is going to be removed in GCC 16.