https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119131
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
In cmpelim dump I still see
(insn 176 7 8 2 (set (reg:SD 47 v15 [207])
(const_double:SD 0E-101 [N/A])) "pr119131.c":11:24 78 {*movsd_aarch64}
(expr_list:REG_EQUIV (const_double:SD 0E-101 [N/A])
(nil)))
but starting with pro_and_epilogue dump it is
(insn 236 27 199 4 (set (reg:SD 47 v15 [207])
(const_double:SD 0E-101 [N/A])) -1
(nil))
(both before and after that commit), no idea what changed.
Before that commit sched_fusion recognizes it again as *movsd_aarch64, but
after that it doesn't.
The insn uses aarch64_valid_fp_move as predicate and that since that commit
ends with
return can_create_pseudo_p ();
so it changes from matching into not matching any more after reload.
That feels really bad idea unless it is also guaranteed to be split by then.