On Wed, Jan 21, 2015 at 9:00 PM, Marc Glisse <marc.gli...@inria.fr> wrote: > Hello, > > (sorry for the broken thread, for some reason I haven't received any email > from gcc since about 10am, I'll investigate later) > > +/* x & ~(x & y) -> x & ~y */ > +(simplify > + (bit_and:c @0 (bit_not (bit_and:c@2 @0 @1))) > + (if (TREE_CODE (@2) != SSA_NAME || has_single_use (@2)) > + (bit_and @0 (bit_not @1)))) > > Wouldn't it make more sense to put @2 on bit_not? If bit_and is used > multiple times, the transformation is neutral so it should be done as a > canonicalization. On the other hand, if bit_not is used multiple times, the > transformation adds an extra bit_not (which might be free when there is an > andn insn). So I believe the 2 main options are: > - move @2 on the bit_not > - don't test has_single_use at all
I tend to favor not testing has_single_use at all. Richard. > -- > Marc Glisse