/* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized-raw" } */ /* PR tree-optimization/111679 */ int f1(int a, int b) { return (~a) | (a ^ b); // ~(a & b) or (~a) | (~b) } _Bool fb(_Bool c, _Bool d) { return (!c) | (c ^ d); // ~(c & d) or (~c) | (~d) } _Bool fb1(int x, int y) { _Bool a = x == 10, b = y > 100; return (!a) | (a ^ b); // ~(a & b) or (~a) | (~b) // or (x != 10) | (y <= 100) } /* { dg-final { scan-tree-dump-not "bit_xor_expr, " "optimized" } } */ /* { dg-final { scan-tree-dump-times "bit_not_expr, " 2 "optimized" } } */ /* { dg-final { scan-tree-dump-times "bit_and_expr, " 2 "optimized" } } */ /* { dg-final { scan-tree-dump-times "bit_ior_expr, " 1 "optimized" } } */ /* { dg-final { scan-tree-dump-times "ne_expr, _\[0-9\]+, x_\[0-9\]+" 1 "optimized" } } */ /* { dg-final { scan-tree-dump-times "le_expr, _\[0-9\]+, y_\[0-9\]+" 1 "optimized" } } */