2 /* { dg-do compile } */
3 /* { dg-options "-Wlogical-op" } */
11 extern int bar (void);
13 struct R
{ int a
, b
; } S
;
18 if (a
&& a
) {} /* { dg-warning "logical .and. of equal expressions" } */
19 if (!a
&& !a
) {} /* { dg-warning "logical .and. of equal expressions" } */
20 if (!!a
&& !!a
) {} /* { dg-warning "logical .and. of equal expressions" } */
21 if (a
> 0 && a
> 0) {} /* { dg-warning "logical .and. of equal expressions" } */
22 if (a
< 0 && a
< 0) {} /* { dg-warning "logical .and. of equal expressions" } */
23 if (a
== 0 && a
== 0) {} /* { dg-warning "logical .and. of equal expressions" } */
24 if (a
<= 0 && a
<= 0) {} /* { dg-warning "logical .and. of equal expressions" } */
25 if (a
>= 0 && a
>= 0) {} /* { dg-warning "logical .and. of equal expressions" } */
26 if (a
== 0 && !(a
!= 0)) {} /* { dg-warning "logical .and. of equal expressions" } */
28 if (a
&& a
&& a
) {} /* { dg-warning "logical .and. of equal expressions" } */
29 if ((a
+ 1) && (a
+ 1)) {} /* { dg-warning "logical .and. of equal expressions" } */
30 if ((10 * a
) && (a
* 10)) {} /* { dg-warning "logical .and. of equal expressions" } */
31 if (!!a
&& a
) {} /* { dg-warning "logical .and. of equal expressions" } */
33 if (*p
&& *p
) {} /* { dg-warning "logical .and. of equal expressions" } */
34 if (p
[0] && p
[0]) {} /* { dg-warning "logical .and. of equal expressions" } */
35 if (S
.a
&& S
.a
) {} /* { dg-warning "logical .and. of equal expressions" } */
36 if ((bool) a
&& (bool) a
) {} /* { dg-warning "logical .and. of equal expressions" } */
37 if ((unsigned) a
&& a
) {} /* { dg-warning "logical .and. of equal expressions" } */
39 /* Stay quiet here. */
43 if (a
> 0 && b
> 0) {}
44 if (a
< 0 && b
< 0) {}
45 if (a
== 0 && b
== 0) {}
46 if (a
<= 0 && b
<= 0) {}
47 if (a
>= 0 && b
>= 0) {}
49 if (a
> 0 && a
> 1) {}
50 if (a
> -2 && a
> 1) {}
51 if (a
&& (short) a
) {}
57 if (bar () && bar ()) {}
66 if (a
|| a
) {} /* { dg-warning "logical .or. of equal expressions" } */
67 if (!a
|| !a
) {} /* { dg-warning "logical .or. of equal expressions" } */
68 if (!!a
|| !!a
) {} /* { dg-warning "logical .or. of equal expressions" } */
69 if (a
> 0 || a
> 0) {} /* { dg-warning "logical .or. of equal expressions" } */
70 if (a
< 0 || a
< 0) {} /* { dg-warning "logical .or. of equal expressions" } */
71 if (a
== 0 || a
== 0) {} /* { dg-warning "logical .or. of equal expressions" } */
72 if (a
<= 0 || a
<= 0) {} /* { dg-warning "logical .or. of equal expressions" } */
73 if (a
>= 0 || a
>= 0) {} /* { dg-warning "logical .or. of equal expressions" } */
74 if (a
== 0 || !(a
!= 0)) {} /* { dg-warning "logical .or. of equal expressions" } */
76 if (a
|| a
|| a
) {} /* { dg-warning "logical .or. of equal expressions" } */
77 if ((a
+ 1) || (a
+ 1)) {} /* { dg-warning "logical .or. of equal expressions" } */
78 if ((10 * a
) || (a
* 10)) {} /* { dg-warning "logical .or. of equal expressions" } */
79 if (!!a
|| a
) {} /* { dg-warning "logical .or. of equal expressions" } */
81 if (*p
|| *p
) {} /* { dg-warning "logical .or. of equal expressions" } */
82 if (p
[0] || p
[0]) {} /* { dg-warning "logical .or. of equal expressions" } */
83 if (S
.a
|| S
.a
) {} /* { dg-warning "logical .or. of equal expressions" } */
84 if ((bool) a
|| (bool) a
) {} /* { dg-warning "logical .or. of equal expressions" } */
85 if ((unsigned) a
|| a
) {} /* { dg-warning "logical .or. of equal expressions" } */
87 /* Stay quiet here. */
91 if (a
> 0 || b
> 0) {}
92 if (a
< 0 || b
< 0) {}
93 if (a
== 0 || b
== 0) {}
94 if (a
<= 0 || b
<= 0) {}
95 if (a
>= 0 || b
>= 0) {}
97 if (a
> 0 || a
> 1) {}
98 if (a
> -2 || a
> 1) {}
99 if (a
|| (short) a
) {}
100 if ((char) a
|| a
) {}
105 if (bar () || bar ()) {}