1 /* { dg-options "-Wparentheses -ftrack-macro-expansion=0" } */
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" } */