On Thu, Nov 07, 2013 at 04:39:03PM +0100, Richard Biener wrote: > On Thu, Nov 7, 2013 at 4:15 PM, Marek Polacek <pola...@redhat.com> wrote: > > Here, forward propagation turned > > _6 = a.1_5 & 1; > > _7 = (_Bool) _6; > > into > > _7 = (_Bool) a.1_5; > > but that's wrong: e.g. if a = 2 then (_Bool) _6 is 0, but (_Bool) a.1_5 is > > 1. > > ? > > (_Bool) 2 > > should truncate the value to zero.
Aha. I can see now, said the blind man. Anyway, I'll revisit this in stage 3; I now suspect the special handling of BIT_IOR_EXPR in register_edge_assert_for_1. Marek