On Thu, Jun 29, 2017 at 5:10 PM, Wilco Dijkstra <wilco.dijks...@arm.com> wrote: > Richard Biener wrote: > >> int f (int m, int c) >> { >> return (m & 1) * c; >> } > > This case (integer[0,1] rather than boolean input) should be transformed into > c & -(m & 1).
The proposed patch handled both the same. This means the pattern shouldn't use range-info but instead match a more complex (mult (convert (cmp @0 @1)) @2) ? Note that from a gimple perspective c & -(m & 1) is more complex than (m & 1) * c and thus non-canonical. > Wilco