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.