/* PR c/77423 */ /* { dg-do compile } */ /* { dg-options "-Wlogical-not-parentheses" } */ #ifndef __cplusplus # define bool _Bool #endif int f (int a, bool b, bool c) { int r = 0; r += !a == (b | c); r += !a == (b ^ c); r += !a == (b & c); r += !a == ~b; r += !a == ~(int) b; r += !a == ((b & c) | c); r += !a == ((b & c) | (b ^ c)); r += !a == (int) (b ^ c); r += !a == (int) ~b; r += !a == ~~b; r += !a == ~(b | c); r += !a == ~(b | (a == 1)); r += !a == ~(a == 1); r += !a == ((b & c) | (b ^ a)); /* { dg-warning "logical not is only applied to the left hand side of comparison" } */ return r; }