https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109009
--- Comment #4 from Segher Boessenkool <segher at gcc dot gnu.org> --- Alternatively (or in addition), you can look how to make the shrink-wrap pass transform the code with some simple added move instructions, maybe even involving an extra pseudo, so that it can shrink-wrap more. A very simple (and because of that, not very effective) version of that is done in prepare_shrink_wrapping already. The problem with this is that such transformations are not free: the extra insns can often be optimised away (just by register allocation), and even if not, if it causes more / better shrink-wrapping it is a win anyway. But it has to be done only if it improves shrink-wrapping (or it likely improves it), or it isn't a net win.