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).

Reply via email to