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?

Reply via email to