annotate gcc/testsuite/c-c++-common/Wduplicated-cond-3.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* PR c/64249 */
kono
parents:
diff changeset
2 /* { dg-do compile } */
kono
parents:
diff changeset
3 /* { dg-options "-Wall -Wno-duplicated-cond" } */
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 #ifndef __cplusplus
kono
parents:
diff changeset
6 # define bool _Bool
kono
parents:
diff changeset
7 # define true 1
kono
parents:
diff changeset
8 # define false 0
kono
parents:
diff changeset
9 #endif
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 extern int foo (void);
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 int
kono
parents:
diff changeset
14 fn1 (int n)
kono
parents:
diff changeset
15 {
kono
parents:
diff changeset
16 if (n == 1)
kono
parents:
diff changeset
17 return -1;
kono
parents:
diff changeset
18 else if (n == 2)
kono
parents:
diff changeset
19 return 0;
kono
parents:
diff changeset
20 else if (n == 1)
kono
parents:
diff changeset
21 return 1;
kono
parents:
diff changeset
22 return 0;
kono
parents:
diff changeset
23 }
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 int
kono
parents:
diff changeset
26 fn2 (void)
kono
parents:
diff changeset
27 {
kono
parents:
diff changeset
28 if (4)
kono
parents:
diff changeset
29 return 1;
kono
parents:
diff changeset
30 else if (4)
kono
parents:
diff changeset
31 return 2;
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33 #define N 10
kono
parents:
diff changeset
34 if (N)
kono
parents:
diff changeset
35 return 3;
kono
parents:
diff changeset
36 else if (N)
kono
parents:
diff changeset
37 return 4;
kono
parents:
diff changeset
38 }
kono
parents:
diff changeset
39
kono
parents:
diff changeset
40 int
kono
parents:
diff changeset
41 fn3 (int n)
kono
parents:
diff changeset
42 {
kono
parents:
diff changeset
43 if (n == 42)
kono
parents:
diff changeset
44 return 1;
kono
parents:
diff changeset
45 if (n == 42)
kono
parents:
diff changeset
46 return 2;
kono
parents:
diff changeset
47
kono
parents:
diff changeset
48 if (n)
kono
parents:
diff changeset
49 if (n)
kono
parents:
diff changeset
50 if (n)
kono
parents:
diff changeset
51 if (n)
kono
parents:
diff changeset
52 return 42;
kono
parents:
diff changeset
53
kono
parents:
diff changeset
54 if (!n)
kono
parents:
diff changeset
55 return 10;
kono
parents:
diff changeset
56 else
kono
parents:
diff changeset
57 return 11;
kono
parents:
diff changeset
58 }
kono
parents:
diff changeset
59
kono
parents:
diff changeset
60 int
kono
parents:
diff changeset
61 fn4 (int n)
kono
parents:
diff changeset
62 {
kono
parents:
diff changeset
63 if (n > 0)
kono
parents:
diff changeset
64 {
kono
parents:
diff changeset
65 if (n == 1)
kono
parents:
diff changeset
66 return 1;
kono
parents:
diff changeset
67 else if (n == 1)
kono
parents:
diff changeset
68 return 2;
kono
parents:
diff changeset
69 }
kono
parents:
diff changeset
70 else if (n < 0)
kono
parents:
diff changeset
71 {
kono
parents:
diff changeset
72 if (n < -1)
kono
parents:
diff changeset
73 return 6;
kono
parents:
diff changeset
74 else if (n < -2)
kono
parents:
diff changeset
75 {
kono
parents:
diff changeset
76 if (n == -10)
kono
parents:
diff changeset
77 return 3;
kono
parents:
diff changeset
78 else if (n == -10)
kono
parents:
diff changeset
79 return 4;
kono
parents:
diff changeset
80 }
kono
parents:
diff changeset
81 }
kono
parents:
diff changeset
82 else
kono
parents:
diff changeset
83 return 7;
kono
parents:
diff changeset
84 return 0;
kono
parents:
diff changeset
85 }
kono
parents:
diff changeset
86
kono
parents:
diff changeset
87 struct S { long p, q; };
kono
parents:
diff changeset
88
kono
parents:
diff changeset
89 int
kono
parents:
diff changeset
90 fn5 (struct S *s)
kono
parents:
diff changeset
91 {
kono
parents:
diff changeset
92 if (!s->p)
kono
parents:
diff changeset
93 return 12345;
kono
parents:
diff changeset
94 else if (!s->p)
kono
parents:
diff changeset
95 return 1234;
kono
parents:
diff changeset
96 return 0;
kono
parents:
diff changeset
97 }
kono
parents:
diff changeset
98
kono
parents:
diff changeset
99 int
kono
parents:
diff changeset
100 fn6 (int n)
kono
parents:
diff changeset
101 {
kono
parents:
diff changeset
102 if (n)
kono
parents:
diff changeset
103 return n;
kono
parents:
diff changeset
104 else if (n)
kono
parents:
diff changeset
105 return n;
kono
parents:
diff changeset
106 else if (n)
kono
parents:
diff changeset
107 return n;
kono
parents:
diff changeset
108 else if (n)
kono
parents:
diff changeset
109 return n;
kono
parents:
diff changeset
110 else if (n)
kono
parents:
diff changeset
111 return n;
kono
parents:
diff changeset
112 else if (n)
kono
parents:
diff changeset
113 return n;
kono
parents:
diff changeset
114 else if (n)
kono
parents:
diff changeset
115 return n;
kono
parents:
diff changeset
116 else if (n)
kono
parents:
diff changeset
117 return n;
kono
parents:
diff changeset
118 return 0;
kono
parents:
diff changeset
119 }
kono
parents:
diff changeset
120
kono
parents:
diff changeset
121 int
kono
parents:
diff changeset
122 fn7 (int n)
kono
parents:
diff changeset
123 {
kono
parents:
diff changeset
124 if (n == 0)
kono
parents:
diff changeset
125 return 10;
kono
parents:
diff changeset
126 else if (n == 1)
kono
parents:
diff changeset
127 return 11;
kono
parents:
diff changeset
128 else if (n == 2)
kono
parents:
diff changeset
129 return 12;
kono
parents:
diff changeset
130 else if (n == 3)
kono
parents:
diff changeset
131 return 13;
kono
parents:
diff changeset
132 else if (n == 4)
kono
parents:
diff changeset
133 return 14;
kono
parents:
diff changeset
134 else if (n == 5)
kono
parents:
diff changeset
135 return 15;
kono
parents:
diff changeset
136 else if (n == 6)
kono
parents:
diff changeset
137 return 16;
kono
parents:
diff changeset
138 else if (n == 7)
kono
parents:
diff changeset
139 return 17;
kono
parents:
diff changeset
140 else if (n == 0)
kono
parents:
diff changeset
141 return 100;
kono
parents:
diff changeset
142 else if (n == 1)
kono
parents:
diff changeset
143 return 101;
kono
parents:
diff changeset
144 else if (n == 2)
kono
parents:
diff changeset
145 return 102;
kono
parents:
diff changeset
146 else if (n == 3)
kono
parents:
diff changeset
147 return 103;
kono
parents:
diff changeset
148 else if (n == 4)
kono
parents:
diff changeset
149 return 104;
kono
parents:
diff changeset
150 else if (n == 5)
kono
parents:
diff changeset
151 return 105;
kono
parents:
diff changeset
152 else if (n == 6)
kono
parents:
diff changeset
153 return 106;
kono
parents:
diff changeset
154 else if (n == 7)
kono
parents:
diff changeset
155 return 107;
kono
parents:
diff changeset
156 return 0;
kono
parents:
diff changeset
157 }
kono
parents:
diff changeset
158
kono
parents:
diff changeset
159 int
kono
parents:
diff changeset
160 fn8 (bool b)
kono
parents:
diff changeset
161 {
kono
parents:
diff changeset
162 if (!b)
kono
parents:
diff changeset
163 return 16;
kono
parents:
diff changeset
164 else if (!b)
kono
parents:
diff changeset
165 return 27;
kono
parents:
diff changeset
166 else
kono
parents:
diff changeset
167 return 64;
kono
parents:
diff changeset
168 }
kono
parents:
diff changeset
169
kono
parents:
diff changeset
170 int
kono
parents:
diff changeset
171 fn9 (int i, int j, int k)
kono
parents:
diff changeset
172 {
kono
parents:
diff changeset
173 if ((i > 0 && j > 0 && k > 0)
kono
parents:
diff changeset
174 && ((i > 11 && j == 76 && k < 10)
kono
parents:
diff changeset
175 || (i < 0 && j == 99 && k > 103)))
kono
parents:
diff changeset
176 return -999;
kono
parents:
diff changeset
177 else
kono
parents:
diff changeset
178 if ((i > 0 && j > 0 && k > 0)
kono
parents:
diff changeset
179 && ((i > 11 && j == 76 && k < 10)
kono
parents:
diff changeset
180 || (i < 0 && j == 99 && k > 103)))
kono
parents:
diff changeset
181 return 999;
kono
parents:
diff changeset
182 else
kono
parents:
diff changeset
183 return 0;
kono
parents:
diff changeset
184 }
kono
parents:
diff changeset
185
kono
parents:
diff changeset
186 int
kono
parents:
diff changeset
187 fn10 (void)
kono
parents:
diff changeset
188 {
kono
parents:
diff changeset
189 if (foo ())
kono
parents:
diff changeset
190 return 17329;
kono
parents:
diff changeset
191 else if (foo ())
kono
parents:
diff changeset
192 return 18409;
kono
parents:
diff changeset
193 return 0;
kono
parents:
diff changeset
194 }
kono
parents:
diff changeset
195
kono
parents:
diff changeset
196 int
kono
parents:
diff changeset
197 fn11 (int n)
kono
parents:
diff changeset
198 {
kono
parents:
diff changeset
199 if (++n == 10)
kono
parents:
diff changeset
200 return 666;
kono
parents:
diff changeset
201 else if (++n == 10)
kono
parents:
diff changeset
202 return 9;
kono
parents:
diff changeset
203 return 0;
kono
parents:
diff changeset
204 }