https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116282
--- Comment #2 from Jeffrey A. Law <law at gcc dot gnu.org> --- I haven't fully debugged, but I strongly suspect this is a case where matching is inconsistent before/after LRA due to the paths through the constant synthesis code which check if we can create new pseudos. Furthermore, this will become a bigger problem once we sort through Raphael's constant synthesis improvements for !ZBKB since those improvements add at least two more paths through the constant synthesis code which will be dependent upon the ability to allocate a scratch register. The improvement from the problem pattern is pretty marginal; it was supposed to help a case in xz and it did in the heavily reduced testcase. But it didn't make a bit of difference in practice. Additionally, I've never been terribly happy with how the pattern's condition works. I need to ponder this a bit more, but one option is to simply get rid of this problem pattern.