1 /* PR c/70436 */
2 /* { dg-options "-Wparentheses" } */
3
4 int a, b, c;
5 void bar (void);
6 void baz (void);
7
8 void
9 foo (void)
10 {
11 int i, j;
12
13 if (a) /* { dg-warning "ambiguous" } */
14 for (;;)
15 if (b)
16 bar ();
17 else
18 baz ();
19
20 if (a) /* { dg-warning "ambiguous" } */
21 while (1)
22 if (b)
23 bar ();
24 else
25 baz ();
26
27 if (a) /* { dg-warning "ambiguous" } */
28 while (1)
29 for (;;)
30 if (b)
31 bar ();
32 else
33 baz ();
34
35 if (a) /* { dg-warning "ambiguous" } */
36 while (1)
37 while (1)
38 if (b)
39 bar ();
40 else
41 baz ();
42
43 if (a) /* { dg-warning "ambiguous" } */
44 for (i = 0; i < 10; i++)
45 for (j = 0; j < 10; j++)
46 if (b)
47 bar ();
48 else
49 baz ();
50
51 if (a)
52 for (i = 0; i < 10; i++)
53 if (b) /* { dg-warning "ambiguous" } */
54 for (j = 0; j < 10; j++)
55 if (c)
56 bar ();
57 else
58 baz ();
59
60 if (a) /* { dg-warning "ambiguous" } */
61 for (i = 0; i < 10; i++)
62 if (b)
63 for (j = 0; j < 10; j++)
64 if (c)
65 bar ();
66 else
67 baz ();
68 else
69 bar ();
70
71 if (a) /* { dg-warning "ambiguous" } */
72 for (;;)
73 if (b)
74 while (1)
75 if (a)
76 bar ();
77 else
78 baz ();
79 else
80 bar ();
81
82 if (a) /* { dg-warning "ambiguous" } */
83 for (;;)
84 if (b)
85 while (1)
86 {
87 if (a) { bar (); } else { baz (); }
88 }
89 else
90 bar ();
91
92 if (a)
93 for (;;)
94 if (b)
95 bar ();
96 else
97 baz ();
98 else bar ();
99
100 if (a)
101 while (1)
102 if (b)
103 bar ();
104 else
105 baz ();
106 else bar ();
107
108 if (a)
109 for (;;)
110 {
111 if (b)
112 bar ();
113 else
114 baz ();
115 }
116
117 if (a)
118 {
119 for (;;)
120 if (b)
121 bar ();
122 }
123 else baz ();
124
125 if (a)
126 do
127 if (b) bar (); else baz ();
128 while (b);
129
130 if (a)
131 do
132 if (b) bar ();
133 while (b);
134 else baz ();
135 }