2014-07-29 Ed Smith-Rowland <3dw4rd@verizon.net>
[official-gcc.git] / gcc / testsuite / c-c++-common / pr60439.c
blob3368a0b944d3e52a66144dcef439bf99003f09cb
1 /* PR c/60439 */
2 /* { dg-do compile } */
4 #ifndef __cplusplus
5 # define bool _Bool
6 #endif
8 extern bool foo (void);
10 void
11 f1 (bool b)
13 switch (b) /* { dg-warning "switch condition has" } */
14 break;
17 void
18 f2 (int a, int b)
20 switch (a && b) /* { dg-warning "switch condition has" } */
21 break;
22 switch ((bool) (a && b)) /* { dg-warning "switch condition has" } */
23 break;
24 switch ((a && b) || a) /* { dg-warning "switch condition has" } */
25 break;
26 /* No warnings on following. */
27 switch ((int) (a && b))
28 break;
29 switch ((unsigned int) (a && b))
30 break;
31 switch ((unsigned short int) (a && b))
32 break;
33 switch ((char) (a && b))
34 break;
37 void
38 f3 (int a)
40 switch (!!a) /* { dg-warning "switch condition has" } */
41 break;
42 switch (!a) /* { dg-warning "switch condition has" } */
43 break;
46 void
47 f4 (void)
49 switch (foo ()) /* { dg-warning "switch condition has" } */
50 break;
53 void
54 f5 (int a)
56 switch (a == 3) /* { dg-warning "switch condition has" } */
57 break;
58 switch (a != 3) /* { dg-warning "switch condition has" } */
59 break;
60 switch (a > 3) /* { dg-warning "switch condition has" } */
61 break;
62 switch (a < 3) /* { dg-warning "switch condition has" } */
63 break;
64 switch (a <= 3) /* { dg-warning "switch condition has" } */
65 break;
66 switch (a >= 3) /* { dg-warning "switch condition has" } */
67 break;
68 switch (foo (), foo (), a >= 42) /* { dg-warning "switch condition has" } */
69 break;
70 switch (a == 3, a & 4, a ^ 5, a)
71 break;
72 switch ((int) (a == 3))
73 break;
74 switch ((int) (a != 3))
75 break;
78 void
79 f6 (bool b)
81 switch (b) /* { dg-warning "switch condition has" } */
82 break;
83 switch (!b) /* { dg-warning "switch condition has" } */
84 break;
85 switch (b++) /* { dg-warning "switch condition has" } */
86 break;
89 void
90 f7 (void)
92 bool b;
93 switch (b = 1) /* { dg-warning "switch condition has" } */
94 break;
97 void
98 f8 (int i)
100 switch (i)
101 break;
102 switch ((int) i)
103 break;
104 switch ((unsigned int) i)
105 break;
106 switch ((bool) i) /* { dg-warning "switch condition has" } */
107 break;