Redundant logical operations left after early splitting
Jeff Law
law@redhat.com
Mon Feb 25 09:37:00 GMT 2008
hutchinsonandy@aim.com wrote:
> If I understand correctly:
>
> Prop. of "0" causes simplfy-rtx to create NOP from OR Rx,0
> This NOP (deletion?) creates another set of potential uses - as now the
> prior RHS def now passes straight thru to a new set of uses - but we
> miss those new uses. (which in the testcase are often 0)
>
> I will try fwprop in a few different spots latter and see what, if any
> changes occur.
Classic cascading.
I think some of this is an artifact of how your splitters are working.
You end up creating code which looks like
(set (reg1) (const_int 0)
(set (reg1) (ior (reg1) (other_reg)
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 :-)
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.
Jeff
More information about the Gcc
mailing list