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.

Reply via email to