| /* PR c/102245 */ |
| /* { dg-options "-Wint-in-bool-context" } */ |
| /* { dg-do compile } */ |
| |
| _Bool test1(_Bool x) |
| { |
| return !(x << 0); /* { dg-warning "boolean context" } */ |
| } |
| |
| _Bool test2(_Bool x) |
| { |
| return !(x << 1); /* { dg-warning "boolean context" } */ |
| } |
| |
| _Bool test3(_Bool x, int y) |
| { |
| return !(x << y); /* { dg-warning "boolean context" } */ |
| } |
| |
| _Bool test4(int x, int y) |
| { |
| return !(x << y); /* { dg-warning "boolean context" } */ |
| } |
| |
| _Bool test5(int x, int y) |
| { |
| return !((x << y) << 0); /* { dg-warning "boolean context" } */ |
| } |
| |
| int test6(_Bool x) |
| { |
| int v = 0; |
| return (v & ~1L) | (1L & (x << 0)); /* { dg-bogus "boolean context" } */ |
| } |
| |