annotate gcc/testsuite/c-c++-common/Wduplicated-cond-1.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
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 "-Wduplicated-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) /* { dg-message "previously used here" } */
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) /* { dg-warning "duplicated .if. condition" } */
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) /* { dg-message "previously used here" } */
kono
parents:
diff changeset
66 return 1;
kono
parents:
diff changeset
67 else if (n == 1) /* { dg-warning "duplicated .if. condition" } */
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) /* { dg-message "previously used here" } */
kono
parents:
diff changeset
77 return 3;
kono
parents:
diff changeset
78 else if (n == -10) /* { dg-warning "duplicated .if. condition" } */
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) /* { dg-message "previously used here" } */
kono
parents:
diff changeset
93 return 12345;
kono
parents:
diff changeset
94 else if (!s->p) /* { dg-warning "duplicated .if. condition" } */
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) /* { dg-message "previously used here" } */
kono
parents:
diff changeset
103 return n;
kono
parents:
diff changeset
104 else if (n) /* { dg-warning "duplicated .if. condition" } */
kono
parents:
diff changeset
105 return n;
kono
parents:
diff changeset
106 else if (n) /* { dg-warning "duplicated .if. condition" } */
kono
parents:
diff changeset
107 return n;
kono
parents:
diff changeset
108 else if (n) /* { dg-warning "duplicated .if. condition" } */
kono
parents:
diff changeset
109 return n;
kono
parents:
diff changeset
110 else if (n) /* { dg-warning "duplicated .if. condition" } */
kono
parents:
diff changeset
111 return n;
kono
parents:
diff changeset
112 else if (n) /* { dg-warning "duplicated .if. condition" } */
kono
parents:
diff changeset
113 return n;
kono
parents:
diff changeset
114 else if (n) /* { dg-warning "duplicated .if. condition" } */
kono
parents:
diff changeset
115 return n;
kono
parents:
diff changeset
116 else if (n) /* { dg-warning "duplicated .if. condition" } */
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) /* { dg-message "previously used here" } */
kono
parents:
diff changeset
125 return 10;
kono
parents:
diff changeset
126 else if (n == 1) /* { dg-message "previously used here" } */
kono
parents:
diff changeset
127 return 11;
kono
parents:
diff changeset
128 else if (n == 2) /* { dg-message "previously used here" } */
kono
parents:
diff changeset
129 return 12;
kono
parents:
diff changeset
130 else if (n == 3) /* { dg-message "previously used here" } */
kono
parents:
diff changeset
131 return 13;
kono
parents:
diff changeset
132 else if (n == 4) /* { dg-message "previously used here" } */
kono
parents:
diff changeset
133 return 14;
kono
parents:
diff changeset
134 else if (n == 5) /* { dg-message "previously used here" } */
kono
parents:
diff changeset
135 return 15;
kono
parents:
diff changeset
136 else if (n == 6) /* { dg-message "previously used here" } */
kono
parents:
diff changeset
137 return 16;
kono
parents:
diff changeset
138 else if (n == 7) /* { dg-message "previously used here" } */
kono
parents:
diff changeset
139 return 17;
kono
parents:
diff changeset
140 else if (n == 0) /* { dg-warning "duplicated .if. condition" } */
kono
parents:
diff changeset
141 return 100;
kono
parents:
diff changeset
142 else if (n == 1) /* { dg-warning "duplicated .if. condition" } */
kono
parents:
diff changeset
143 return 101;
kono
parents:
diff changeset
144 else if (n == 2) /* { dg-warning "duplicated .if. condition" } */
kono
parents:
diff changeset
145 return 102;
kono
parents:
diff changeset
146 else if (n == 3) /* { dg-warning "duplicated .if. condition" } */
kono
parents:
diff changeset
147 return 103;
kono
parents:
diff changeset
148 else if (n == 4) /* { dg-warning "duplicated .if. condition" } */
kono
parents:
diff changeset
149 return 104;
kono
parents:
diff changeset
150 else if (n == 5) /* { dg-warning "duplicated .if. condition" } */
kono
parents:
diff changeset
151 return 105;
kono
parents:
diff changeset
152 else if (n == 6) /* { dg-warning "duplicated .if. condition" } */
kono
parents:
diff changeset
153 return 106;
kono
parents:
diff changeset
154 else if (n == 7) /* { dg-warning "duplicated .if. condition" } */
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) /* { dg-message "previously used here" } */
kono
parents:
diff changeset
163 return 16;
kono
parents:
diff changeset
164 else if (!b) /* { dg-warning "duplicated .if. condition" } */
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) /* { dg-message "previously used here" } */
kono
parents:
diff changeset
174 return -999;
kono
parents:
diff changeset
175 else
kono
parents:
diff changeset
176 if (i > 0 && j > 0 && k > 0) /* { dg-warning "duplicated .if. condition" } */
kono
parents:
diff changeset
177 return 999;
kono
parents:
diff changeset
178 else
kono
parents:
diff changeset
179 return 0;
kono
parents:
diff changeset
180 }
kono
parents:
diff changeset
181
kono
parents:
diff changeset
182 int
kono
parents:
diff changeset
183 fn10 (void)
kono
parents:
diff changeset
184 {
kono
parents:
diff changeset
185 if (foo ())
kono
parents:
diff changeset
186 return 17329;
kono
parents:
diff changeset
187 else if (foo ())
kono
parents:
diff changeset
188 return 18409;
kono
parents:
diff changeset
189 return 0;
kono
parents:
diff changeset
190 }
kono
parents:
diff changeset
191
kono
parents:
diff changeset
192 int
kono
parents:
diff changeset
193 fn11 (int n)
kono
parents:
diff changeset
194 {
kono
parents:
diff changeset
195 if (++n == 10)
kono
parents:
diff changeset
196 return 666;
kono
parents:
diff changeset
197 else if (++n == 10)
kono
parents:
diff changeset
198 return 9;
kono
parents:
diff changeset
199 return 0;
kono
parents:
diff changeset
200 }