111
|
1 /* PR 7543. Test operation of -Wparentheses. Precedence warnings.
|
|
2 !a | b and !a & b. */
|
|
3 /* { dg-do compile } */
|
|
4 /* { dg-options "-Wparentheses" } */
|
|
5 // C++ version of Wparentheses-11.c
|
|
6 int foo (int);
|
|
7
|
131
|
8 void
|
111
|
9 bar (int a, int b, int c)
|
|
10 {
|
|
11 foo (!a & b); /* { dg-warning "parentheses" "correct warning" } */
|
|
12 foo (!a & (b < c));
|
|
13 foo (!a & (b > c));
|
|
14 foo (!a & (b == c));
|
|
15 foo (!a & (b != c));
|
|
16 foo (!a & (b <= c));
|
|
17 foo (!a & (b >= c));
|
|
18 foo (!a & (b && c));
|
|
19 foo (!a & (b || c));
|
|
20 foo (!a & !b);
|
|
21 foo (!(a & b));
|
|
22 foo ((!a) & b);
|
|
23 foo (!a & 2); /* { dg-warning "parentheses" "correct warning" } */
|
|
24 foo (!a & (2 < c));
|
|
25 foo (!a & (2 > c));
|
|
26 foo (!a & (2 == c));
|
|
27 foo (!a & (2 != c));
|
|
28 foo (!a & (2 <= c));
|
|
29 foo (!a & (2 >= c));
|
|
30 foo (!a & (2 && c));
|
|
31 foo (!a & (2 || c));
|
|
32 foo (!a & !2);
|
|
33 foo (!(a & 2));
|
|
34 foo ((!a) & 2);
|
|
35 foo (!1 & 2); /* { dg-warning "parentheses" "correct warning" } */
|
|
36 foo (!1 & (2 < c));
|
|
37 foo (!1 & (2 > c));
|
|
38 foo (!1 & (2 == c));
|
|
39 foo (!1 & (2 != c));
|
|
40 foo (!1 & (2 <= c));
|
|
41 foo (!1 & (2 >= c));
|
|
42 foo (!1 & (2 && c));
|
|
43 foo (!1 & (2 || c));
|
|
44 foo (!1 & !2);
|
|
45 foo (!(1 & 2));
|
|
46
|
|
47 foo (!a | b); /* { dg-warning "parentheses" "correct warning" } */
|
|
48 foo (!a | (b < c));
|
|
49 foo (!a | (b > c));
|
|
50 foo (!a | (b == c));
|
|
51 foo (!a | (b != c));
|
|
52 foo (!a | (b <= c));
|
|
53 foo (!a | (b >= c));
|
|
54 foo (!a | (b && c));
|
|
55 foo (!a | (b || c));
|
|
56 foo (!a | !b);
|
|
57 foo (!(a | b));
|
|
58 foo ((!a) | b);
|
|
59 foo (!a | 2); /* { dg-warning "parentheses" "correct warning" } */
|
|
60 foo (!a | (2 < c));
|
|
61 foo (!a | (2 > c));
|
|
62 foo (!a | (2 == c));
|
|
63 foo (!a | (2 != c));
|
|
64 foo (!a | (2 <= c));
|
|
65 foo (!a | (2 >= c));
|
|
66 foo (!a | (2 && c));
|
|
67 foo (!a | (2 || c));
|
|
68 foo (!a | !2);
|
|
69 foo (!(a | 2));
|
|
70 foo ((!a) | 2);
|
|
71 foo (!1 | 2); /* { dg-warning "parentheses" "correct warning" } */
|
|
72 foo (!1 | (2 < c));
|
|
73 foo (!1 | (2 > c));
|
|
74 foo (!1 | (2 == c));
|
|
75 foo (!1 | (2 != c));
|
|
76 foo (!1 | (2 <= c));
|
|
77 foo (!1 | (2 >= c));
|
|
78 foo (!1 | (2 && c));
|
|
79 foo (!1 | (2 || c));
|
|
80 foo (!1 | !2);
|
|
81 foo (!(1 | 2));
|
|
82 foo ((!1) | 2);
|
|
83
|
|
84 foo (b & !a); /* { dg-bogus "parentheses" "bogus warning" } */
|
|
85 foo ((b < c) & !a);
|
|
86 foo ((b > c) & !a);
|
|
87 foo ((b == c) & !a);
|
|
88 foo ((b != c) & !a);
|
|
89 foo ((b <= c) & !a);
|
|
90 foo ((b >= c) & !a);
|
|
91 foo ((b && c) & !a);
|
|
92 foo ((b || c) & !a);
|
|
93 foo (!b & !a);
|
|
94 foo (!(b & a));
|
|
95 foo (b & (!a));
|
|
96 foo (2 & !a); /* { dg-bogus "parentheses" "correct warning" } */
|
|
97 foo ((2 < c) & !a);
|
|
98 foo ((2 > c) & !a);
|
|
99 foo ((2 == c) & !a);
|
|
100 foo ((2 != c) & !a);
|
|
101 foo ((2 <= c) & !a);
|
|
102 foo ((2 >= c) & !a);
|
|
103 foo ((2 && c) & !a);
|
|
104 foo ((2 || c) & !a);
|
|
105 foo (!2 & !a);
|
|
106 foo (!(2 & a));
|
|
107 foo (2 & (!a));
|
|
108 foo (2 & !1); /* { dg-bogus "parentheses" "correct warning" } */
|
|
109 foo ((2 < c) & !1);
|
|
110 foo ((2 > c) & !1);
|
|
111 foo ((2 == c) & !1);
|
|
112 foo ((2 != c) & !1);
|
|
113 foo ((2 <= c) & !1);
|
|
114 foo ((2 >= c) & !1);
|
|
115 foo ((2 && c) & !1);
|
|
116 foo ((2 || c) & !1);
|
|
117 foo (!2 & !1);
|
|
118 foo (!(2 & 1));
|
|
119
|
|
120 foo (b | !a); /* { dg-bogus "parentheses" "correct warning" } */
|
|
121 foo ((b < c) | !a);
|
|
122 foo ((b > c) | !a);
|
|
123 foo ((b == c) | !a);
|
|
124 foo ((b != c) | !a);
|
|
125 foo ((b <= c) | !a);
|
|
126 foo ((b >= c) | !a);
|
|
127 foo ((b && c) | !a);
|
|
128 foo ((b || c) | !a);
|
|
129 foo (!b | !a);
|
|
130 foo (!(b | a));
|
|
131 foo (b | (!a));
|
|
132 foo (2 | !a); /* { dg-bogus "parentheses" "correct warning" } */
|
|
133 foo ((2 < c) | !a);
|
|
134 foo ((2 > c) | !a);
|
|
135 foo ((2 == c) | !a);
|
|
136 foo ((2 != c) | !a);
|
|
137 foo ((2 <= c) | !a);
|
|
138 foo ((2 >= c) | !a);
|
|
139 foo ((2 && c) | !a);
|
|
140 foo ((2 || c) | !a);
|
|
141 foo (!2 | !a);
|
|
142 foo (!(2 | a));
|
|
143 foo (2 | (!a));
|
|
144 foo (2 | !1); /* { dg-bogus "parentheses" "correct warning" } */
|
|
145 foo ((2 < c) | !1);
|
|
146 foo ((2 > c) | !1);
|
|
147 foo ((2 == c) | !1);
|
|
148 foo ((2 != c) | !1);
|
|
149 foo ((2 <= c) | !1);
|
|
150 foo ((2 >= c) | !1);
|
|
151 foo ((2 && c) | !1);
|
|
152 foo ((2 || c) | !1);
|
|
153 foo (!2 | !1);
|
|
154 foo (!(2 | 1));
|
|
155 foo (2 | (!1));
|
|
156 }
|
|
157
|
|
158
|
131
|
159 void
|
111
|
160 baz (int a, int b, int c)
|
|
161 {
|
|
162 foo (!a & (b << c));/* { dg-warning "parentheses" "correct warning" } */
|
|
163 foo (!a & (b >> c));/* { dg-warning "parentheses" "correct warning" } */
|
|
164 foo (!a & (b + c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
165 foo (!a & (b - c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
166 foo (!a & (b = c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
167 foo (!a & ~b); /* { dg-warning "parentheses" "correct warning" } */
|
|
168 foo (!a & (b & c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
169 foo (!a & (b | c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
170 foo (!a & 2); /* { dg-warning "parentheses" "correct warning" } */
|
|
171 foo (!a & (2 << c));/* { dg-warning "parentheses" "correct warning" } */
|
|
172 foo (!a & (2 >> c));/* { dg-warning "parentheses" "correct warning" } */
|
|
173 foo (!a & (2 + c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
174 foo (!a & (2 - c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
175 foo (!a & (c = 2)); /* { dg-warning "parentheses" "correct warning" } */
|
|
176 foo (!a & ~2); /* { dg-warning "parentheses" "correct warning" } */
|
|
177 foo (!a & (2 & c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
178 foo (!a & (2 | c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
179 foo (!1 & (2 << c));/* { dg-warning "parentheses" "correct warning" } */
|
|
180 foo (!1 & (2 >> c));/* { dg-warning "parentheses" "correct warning" } */
|
|
181 foo (!1 & (2 + c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
182 foo (!1 & (2 - c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
183 foo (!1 & (c = 2)); /* { dg-warning "parentheses" "correct warning" } */
|
|
184 foo (!1 & ~2); /* { dg-warning "parentheses" "correct warning" } */
|
|
185 foo (!1 & (2 & c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
186 foo (!1 & (2 | c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
187 foo (!a | (b << c));/* { dg-warning "parentheses" "correct warning" } */
|
|
188 foo (!a | (b >> c));/* { dg-warning "parentheses" "correct warning" } */
|
|
189 foo (!a | (b + c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
190 foo (!a | (b - c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
191 foo (!a | (b = c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
192 foo (!a | ~b); /* { dg-warning "parentheses" "correct warning" } */
|
|
193 foo (!a | (b & c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
194 foo (!a | (b | c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
195 foo (!a | (2 << c));/* { dg-warning "parentheses" "correct warning" } */
|
|
196 foo (!a | (2 >> c));/* { dg-warning "parentheses" "correct warning" } */
|
|
197 foo (!a | (2 + c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
198 foo (!a | (2 - c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
199 foo (!a | (c = 2)); /* { dg-warning "parentheses" "correct warning" } */
|
|
200 foo (!a | ~2); /* { dg-warning "parentheses" "correct warning" } */
|
|
201 foo (!a | (2 & c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
202 foo (!a | (2 | c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
203 foo (!1 | (2 << c));/* { dg-warning "parentheses" "correct warning" } */
|
|
204 foo (!1 | (2 >> c));/* { dg-warning "parentheses" "correct warning" } */
|
|
205 foo (!1 | (2 + c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
206 foo (!1 | (2 - c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
207 foo (!1 | (c = 2)); /* { dg-warning "parentheses" "correct warning" } */
|
|
208 foo (!1 | ~2); /* { dg-warning "parentheses" "correct warning" } */
|
|
209 foo (!1 | (2 & c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
210 foo (!1 | (2 | c)); /* { dg-warning "parentheses" "correct warning" } */
|
|
211 foo ((b << c) & !a);
|
|
212 foo ((b >> c) & !a);
|
|
213 foo ((b + c) & !a);
|
|
214 foo ((b - c) & !a);
|
|
215 foo ((b = c) & !a);
|
|
216 foo (~b & !a);
|
|
217 foo ((b & c) & !a);
|
|
218 foo ((b | c) & !a);
|
|
219 foo ((2 << c) & !a);
|
|
220 foo ((2 >> c) & !a);
|
|
221 foo ((2 + c) & !a);
|
|
222 foo ((2 - c) & !a);
|
|
223 foo ((c = 2) & !a);
|
|
224 foo (~2 & !a);
|
|
225 foo ((2 & c) & !a);
|
|
226 foo ((2 | c) & !a);
|
|
227 foo ((2 << c) & !1);
|
|
228 foo ((2 >> c) & !1);
|
|
229 foo ((2 + c) & !1);
|
|
230 foo ((2 - c) & !1);
|
|
231 foo ((c = 2) & !1);
|
|
232 foo (~2 & !1);
|
|
233 foo ((2 & c) & !1);
|
|
234 foo ((2 | c) & !1);
|
|
235 foo ((b << c) | !a);
|
|
236 foo ((b >> c) | !a);
|
|
237 foo ((b + c) | !a);
|
|
238 foo ((b - c) | !a);
|
|
239 foo ((b = c) | !a);
|
|
240 foo (~b | !a);
|
|
241 foo ((b & c) | !a);
|
|
242 foo ((b | c) | !a);
|
|
243 foo ((2 << c) | !a);
|
|
244 foo ((2 >> c) | !a);
|
|
245 foo ((2 + c) | !a);
|
|
246 foo ((2 - c) | !a);
|
|
247 foo ((c = 2) | !a);
|
|
248 foo (~2 | !a);
|
|
249 foo ((2 & c) | !a);
|
|
250 foo ((2 | c) | !a);
|
|
251 foo ((2 << c) | !1);
|
|
252 foo ((2 >> c) | !1);
|
|
253 foo ((2 + c) | !1);
|
|
254 foo ((2 - c) | !1);
|
|
255 foo ((c = 2) | !1);
|
|
256 foo (~2 | !1);
|
|
257 foo ((2 & c) | !1);
|
|
258 foo ((2 | c) | !1);
|
|
259 }
|