PR tree-optimization/86401
[official-gcc.git] / gcc / testsuite / c-c++-common / warn-ommitted-condop.c
blob678373f3d704d8cd8ba1b034ad49e61f22daef57
1 /* { dg-options "-Wparentheses -ftrack-macro-expansion=0" } */
3 #ifndef __cplusplus
4 #define bool _Bool
5 #endif
7 extern void f2 (int);
9 void bar (int x, int y, int z, bool b)
11 #define T(op) f2 (x op y ? : 1)
12 #define T2(op) f2 (x op y ? 2 : 1)
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 T(==); /* { dg-warning "omitted middle operand" } */
19 T(!=); /* { dg-warning "omitted middle operand" } */
20 T(||); /* { dg-warning "omitted middle operand" } */
21 T(&&); /* { dg-warning "omitted middle operand" } */
22 f2 (!x ? : 1); /* { dg-warning "omitted middle operand" } */
23 f2 ((x,!x) ? : 1); /* { dg-warning "omitted middle operand" } */
24 f2 ((x,y,!x) ? : 1); /* { dg-warning "omitted middle operand" } */
25 T2(<); /* { dg-bogus "omitted middle operand" } */
26 T2(>); /* { dg-bogus "omitted middle operand" } */
27 T2(==); /* { dg-bogus "omitted middle operand" } */
28 T2(||); /* { dg-bogus "omitted middle operand" } */
29 T2(&&); /* { dg-bogus "omitted middle operand" } */
30 T(+); /* { dg-bogus "omitted middle operand" } */
31 T(-); /* { dg-bogus "omitted middle operand" } */
32 T(*); /* { dg-bogus "omitted middle operand" } */
33 T(/); /* { dg-bogus "omitted middle operand" } */
34 T(^); /* { dg-bogus "omitted middle operand" } */
35 f2 (b ? : 1); /* { dg-warning "omitted middle operand" } */