https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123806
--- Comment #4 from Jeffrey A. Law <law at gcc dot gnu.org> --- I like the idea of using those full register moves to avoid needing VL at all, but I'm not 100% its spilling that's the problem. It may simply be the case that we're doing an unoptimized build and thus the object simply never got a register. Though in the end that may look close enough to a spill not to matter. Not sure how we'd use that other than somehow magically know that during/after IRA/LRA we'd emit the full register move patterns?!? The other approach (make the FoF cases effectively an atomic sequence) seems like the right thing to do, but I would hazard a guess it's going to get uglier and uglier. If we look at all the places where we do magic for small/likely spilled register classes, then we have the same thing here. We have to make sure no vector code gets inserted between the FoF and the read from VL and we have to make sure that VL is always copied into a temp and that VL itself doesn't get its life extended by combine (for example).
