/* PR tree-optimization/96671 */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ /* { dg-final { scan-tree-dump-times " \\^ " 6 "optimized" } } */ /* { dg-final { scan-tree-dump-times " ~" 6 "optimized" } } */ /* { dg-final { scan-tree-dump-times " & " 6 "optimized" } } */ int foo (int a, int b, int c) { return (a ^ b) & ((b ^ c) ^ a); } int bar (int a, int b, int c) { return (a ^ b) & ((b ^ a) ^ c); } int baz (int a, int b, int c) { return (a ^ b) & ((a ^ c) ^ b); } int qux (int a, int b, int c) { int d = a ^ b; int e = b ^ c; int f = e ^ a; return d & f; } int corge (int a, int b, int c) { int d = a ^ b; int e = b ^ a; int f = c ^ e; return d & f; } int garply (int a, int b, int c) { int d = a ^ b; int e = a ^ c; int f = b ^ e; return d & f; }