fix pr/45972
[official-gcc.git] / gcc / testsuite / c-c++-common / warn-ommitted-condop.c
blobde92b8f2cdc9622f316162e70f0df9634f0c1a4e
1 /* { dg-options "-Wparentheses" } */
3 extern void f2 (int);
5 void bar (int x, int y, int z)
7 #define T(op) f2 (x op y ? : 1)
8 #define T2(op) f2 (x op y ? 2 : 1)
10 T(<); /* { dg-warning "omitted middle operand" } */
11 T(>); /* { dg-warning "omitted middle operand" } */
12 T(<=); /* { dg-warning "omitted middle operand" } */
13 T(>=); /* { dg-warning "omitted middle operand" } */
14 T(==); /* { dg-warning "omitted middle operand" } */
15 T(!=); /* { dg-warning "omitted middle operand" } */
16 T(||); /* { dg-warning "omitted middle operand" } */
17 T(&&); /* { dg-warning "omitted middle operand" } */
18 f2 (!x ? : 1); /* { dg-warning "omitted middle operand" } */
19 T2(<); /* { dg-bogus "omitted middle operand" } */
20 T2(>); /* { dg-bogus "omitted middle operand" } */
21 T2(==); /* { dg-bogus "omitted middle operand" } */
22 T2(||); /* { dg-bogus "omitted middle operand" } */
23 T2(&&); /* { dg-bogus "omitted middle operand" } */
24 T(+); /* { dg-bogus "omitted middle operand" } */
25 T(-); /* { dg-bogus "omitted middle operand" } */
26 T(*); /* { dg-bogus "omitted middle operand" } */
27 T(/); /* { dg-bogus "omitted middle operand" } */
28 T(^); /* { dg-bogus "omitted middle operand" } */