On Thu, Jun 11, 2015 at 01:04:32PM +0200, Marek Polacek wrote: > This patch introduces a new pattern for the match-and-simplify > machinery. > > I have verified this transformation on a toy testcase (tried x and y > in the range [-1000,1000]) and it does a correct thing for all integers. > > The asm diff for fn1 is > - andl %esi, %eax > - orl %edi, %esi > so clearly a win. > > Bootstrapped/regtested on x86_64-linux, ok for trunk?
What about some nop type conversions in between? int fn1 (unsigned int x, unsigned int y) { int a = x; int b = y; unsigned int c = x & y; int d = a | b; return (int) (c ^ d); } ? Also wonder, if some testcases for match.pd shouldn't be in separate statements so that they don't test the GENERIC folding, but GIMPLE folding. Jakub