/* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-phiopt2 -fdump-tree-optimized --param logical-op-non-short-circuit=1" } */ int f(int a, int b, int c) { if (a == 0 && b > c) return 0; return a; } int g(int a, int b, int c) { if (a == 42 && b > c) return 42; return a; } int h(int a, int b, int c, int d) { if (a == d && b > c) return d; return a; } int i(int a, int b, int c) { if ((a > c) & (a == b)) return a; return b; } int j(int a, int b, int c) { if ((a > c) & (a == b)) return b; return a; } int k(int a, int b, int c) { if ((a > c) | (a != b)) return b; return a; } int l(int a, int b, int c) { if ((a > c) | (a != b)) return a; return b; } /* { dg-final { scan-tree-dump-times "if" 0 "phiopt2" } } */ /* { dg-final { scan-tree-dump-times "if" 0 "optimized" } } */