What's important here is that reg1 is being set multiple times. You'd be better off if you can twiddle the splitters to avoid this behavior. If you need a new pseudo, then get one :-)
I agree with this, but...
Once you do that, local would propagate these things better. That still leaves the simplification & nop problem, but I'm pretty sure that can be trivially fixed within local without resorting to running another forwprop pass after splitting.
I want to try *moving* forwprop, not add another pass. Also, fwprop could in principle subsume local const/copyprop; it doesn't right now because I didn't want to compute def-use chains, but it could be changed in the future.
Paolo