https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95218
--- Comment #6 from Uroš Bizjak <ubizjak at gmail dot com> ---
I think I found the issue.
Before the patch, we had:
(insn 375 373 2574 7 (parallel [
(set (reg:V4DF 21 xmm1 [orig:1681 vect__45.441 ] [1681])
(neg:V4DF (mem/c:V4DF (plus:DI (reg/f:DI 7 sp)
(const_int 160 [0xa0])) [3 %sfp+-1184 S32 A256])))
(use (reg:V4DF 20 xmm0 [3332]))
]) "fma_1.h":20:10 1487 {*negv4df2}
(nil))
after the patch, reload is free to create:
(insn 375 3216 2578 7 (parallel [
(set (reg:V4DF 21 xmm1 [orig:1681 vect__45.441 ] [1681])
(neg:V4DF (reg:V4DF 20 xmm0 [3332])))
(use (mem/c:V4DF (plus:DI (reg/f:DI 7 sp)
(const_int 160 [0xa0])) [3 %sfp+-1184 S32 A256]))
]) "fma_1.h":20:10 1487 {*negv4df2}
(nil))
which postreload pass does not like, and simply deletes it:
deleting insn with uid = 375.
Just like that. No substitution whatsoever.
So, is there some limitation with (use) RTX, so we can't have memory here?