Propagating REG_EQUIV notes across register-register moves would seem to a obviously simple way to fix this. Thoughts? I am not sure local-alloc is the best place to address the overall problem, I doubt it is intended to provide such optimizations.An additional cse pass after split would seem a better way perhaps?
You could try adding another fwprop run after splitting. I wouldn't like a third instance of the pass, but it could help.
Paolo