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.