https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120941

--- Comment #30 from Filip Kastl <pheeck at gcc dot gnu.org> ---
(In reply to H.J. Lu from comment #29)
> Created attachment 61973 [details]
> A new patch
> 
> Please try this.

Sadly, this patch doesn't help.  Actually, lbm gets compiled into the same
binary with and without the patch applied (at least on the current master).  If
I disassemble the binary, I still see a spill (vbroadcast to %ymm3 and then
almost immediately vmovapd %ymm3 onto stack).

Not sure, why the patch doesn't trigger.  It works for the testcase.  I
currently don't see what's different between the testcase and unreduced lbm. 
In both cases, rrvl attempts to hoist a vbroadcastsd out of a loop.  For the
testcase, the patch successfully forbids this.  For lbm itself, it fails to
forbid this.  Perhaps bb->loop_father->latch info is corrupted?  Not sure how
probable that is.

I guess that someone with access to lbm must debug this.  I'll look into it.

Reply via email to