1*b198f16eSAdam Balogh // RUN: %clang_analyze_cc1 -std=c++17 %s\
2*b198f16eSAdam Balogh // RUN: -analyzer-checker=core,cplusplus,alpha.cplusplus.STLAlgorithmModeling,debug.DebugIteratorModeling,debug.ExprInspection\
3*b198f16eSAdam Balogh // RUN: -analyzer-config aggressive-binary-operation-simplification=true\
4*b198f16eSAdam Balogh // RUN: -verify
5*b198f16eSAdam Balogh
6*b198f16eSAdam Balogh #include "Inputs/system-header-simulator-cxx.h"
7*b198f16eSAdam Balogh
8*b198f16eSAdam Balogh void clang_analyzer_eval(bool);
9*b198f16eSAdam Balogh
10*b198f16eSAdam Balogh template <typename Iterator>
11*b198f16eSAdam Balogh long clang_analyzer_iterator_position(const Iterator&);
12*b198f16eSAdam Balogh
13*b198f16eSAdam Balogh template <typename Iter> Iter return_any_iterator(const Iter &It);
14*b198f16eSAdam Balogh
test_find1(std::vector<int> V,int n)15*b198f16eSAdam Balogh void test_find1(std::vector<int> V, int n) {
16*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V.begin());
17*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V.begin());
18*b198f16eSAdam Balogh
19*b198f16eSAdam Balogh const auto i3 = std::find(i1, i2, n);
20*b198f16eSAdam Balogh
21*b198f16eSAdam Balogh clang_analyzer_eval(i3 == i2); // expected-warning{{FALSE}}
22*b198f16eSAdam Balogh
23*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
24*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
25*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
26*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
27*b198f16eSAdam Balogh
28*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
29*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
30*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
31*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
32*b198f16eSAdam Balogh }
33*b198f16eSAdam Balogh
test_find2(std::vector<int> V,int n)34*b198f16eSAdam Balogh void test_find2(std::vector<int> V, int n) {
35*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V.begin());
36*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V.begin());
37*b198f16eSAdam Balogh
38*b198f16eSAdam Balogh const auto i3 = std::find(std::execution::sequenced_policy(), i1, i2, n);
39*b198f16eSAdam Balogh
40*b198f16eSAdam Balogh clang_analyzer_eval(i3 == i2); // expected-warning{{FALSE}}}
41*b198f16eSAdam Balogh
42*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
43*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
44*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
45*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
46*b198f16eSAdam Balogh
47*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
48*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
49*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
50*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
51*b198f16eSAdam Balogh }
52*b198f16eSAdam Balogh
odd(int i)53*b198f16eSAdam Balogh bool odd(int i) { return i % 2; }
54*b198f16eSAdam Balogh
test_find_if1(std::vector<int> V)55*b198f16eSAdam Balogh void test_find_if1(std::vector<int> V) {
56*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V.begin());
57*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V.begin());
58*b198f16eSAdam Balogh
59*b198f16eSAdam Balogh const auto i3 = std::find_if(i1, i2, odd);
60*b198f16eSAdam Balogh
61*b198f16eSAdam Balogh clang_analyzer_eval(i3 == i2); // expected-warning{{FALSE}}}
62*b198f16eSAdam Balogh
63*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
64*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
65*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
66*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
67*b198f16eSAdam Balogh
68*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
69*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
70*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
71*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
72*b198f16eSAdam Balogh }
73*b198f16eSAdam Balogh
test_find_if2(std::vector<int> V)74*b198f16eSAdam Balogh void test_find_if2(std::vector<int> V) {
75*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V.begin());
76*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V.begin());
77*b198f16eSAdam Balogh
78*b198f16eSAdam Balogh const auto i3 = std::find_if(std::execution::sequenced_policy(), i1, i2, odd);
79*b198f16eSAdam Balogh
80*b198f16eSAdam Balogh clang_analyzer_eval(i3 == i2); // expected-warning{{FALSE}}}
81*b198f16eSAdam Balogh
82*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
83*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
84*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
85*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
86*b198f16eSAdam Balogh
87*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
88*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
89*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
90*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
91*b198f16eSAdam Balogh }
92*b198f16eSAdam Balogh
test_find_if_not1(std::vector<int> V)93*b198f16eSAdam Balogh void test_find_if_not1(std::vector<int> V) {
94*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V.begin());
95*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V.begin());
96*b198f16eSAdam Balogh
97*b198f16eSAdam Balogh const auto i3 = std::find_if_not(i1, i2, odd);
98*b198f16eSAdam Balogh
99*b198f16eSAdam Balogh clang_analyzer_eval(i3 == i2); // expected-warning{{FALSE}}}
100*b198f16eSAdam Balogh
101*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
102*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
103*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
104*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
105*b198f16eSAdam Balogh
106*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
107*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
108*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
109*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
110*b198f16eSAdam Balogh }
111*b198f16eSAdam Balogh
test_find_if_not2(std::vector<int> V)112*b198f16eSAdam Balogh void test_find_if_not2(std::vector<int> V) {
113*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V.begin());
114*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V.begin());
115*b198f16eSAdam Balogh
116*b198f16eSAdam Balogh const auto i3 = std::find_if_not(std::execution::sequenced_policy(), i1, i2,
117*b198f16eSAdam Balogh odd);
118*b198f16eSAdam Balogh
119*b198f16eSAdam Balogh clang_analyzer_eval(i3 == i2); // expected-warning{{FALSE}}}
120*b198f16eSAdam Balogh
121*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
122*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
123*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
124*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
125*b198f16eSAdam Balogh
126*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
127*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
128*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
129*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
130*b198f16eSAdam Balogh }
131*b198f16eSAdam Balogh
test_find_first_of1(std::vector<int> V1,std::vector<int> V2)132*b198f16eSAdam Balogh void test_find_first_of1(std::vector<int> V1, std::vector<int> V2) {
133*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V1.begin());
134*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V1.begin());
135*b198f16eSAdam Balogh const auto i3 = return_any_iterator(V2.begin());
136*b198f16eSAdam Balogh const auto i4 = return_any_iterator(V2.begin());
137*b198f16eSAdam Balogh
138*b198f16eSAdam Balogh const auto i5 = std::find_first_of(i1, i2, i3, i4);
139*b198f16eSAdam Balogh
140*b198f16eSAdam Balogh clang_analyzer_eval(i5 == i2); // expected-warning{{FALSE}}}
141*b198f16eSAdam Balogh
142*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
143*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
144*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
145*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
146*b198f16eSAdam Balogh
147*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
148*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
149*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
150*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
151*b198f16eSAdam Balogh }
152*b198f16eSAdam Balogh
test_find_first_of2(std::vector<int> V1,std::vector<int> V2)153*b198f16eSAdam Balogh void test_find_first_of2(std::vector<int> V1, std::vector<int> V2) {
154*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V1.begin());
155*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V1.begin());
156*b198f16eSAdam Balogh const auto i3 = return_any_iterator(V2.begin());
157*b198f16eSAdam Balogh const auto i4 = return_any_iterator(V2.begin());
158*b198f16eSAdam Balogh
159*b198f16eSAdam Balogh const auto i5 = std::find_first_of(std::execution::sequenced_policy(),
160*b198f16eSAdam Balogh i1, i2, i3, i4);
161*b198f16eSAdam Balogh
162*b198f16eSAdam Balogh clang_analyzer_eval(i5 == i2); // expected-warning{{FALSE}}}
163*b198f16eSAdam Balogh
164*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
165*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
166*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
167*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
168*b198f16eSAdam Balogh
169*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
170*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
171*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
172*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
173*b198f16eSAdam Balogh }
174*b198f16eSAdam Balogh
test_find_first_of3(std::vector<int> V1,std::vector<int> V2)175*b198f16eSAdam Balogh void test_find_first_of3(std::vector<int> V1, std::vector<int> V2) {
176*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V1.begin());
177*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V1.begin());
178*b198f16eSAdam Balogh const auto i3 = return_any_iterator(V2.begin());
179*b198f16eSAdam Balogh const auto i4 = return_any_iterator(V2.begin());
180*b198f16eSAdam Balogh
181*b198f16eSAdam Balogh const auto i5 = std::find_first_of(i1, i2, i3, i4, odd);
182*b198f16eSAdam Balogh
183*b198f16eSAdam Balogh clang_analyzer_eval(i5 == i2); // expected-warning{{FALSE}}}
184*b198f16eSAdam Balogh
185*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
186*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
187*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
188*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
189*b198f16eSAdam Balogh
190*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
191*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
192*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
193*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
194*b198f16eSAdam Balogh }
195*b198f16eSAdam Balogh
test_find_first_of4(std::vector<int> V1,std::vector<int> V2)196*b198f16eSAdam Balogh void test_find_first_of4(std::vector<int> V1, std::vector<int> V2) {
197*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V1.begin());
198*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V1.begin());
199*b198f16eSAdam Balogh const auto i3 = return_any_iterator(V2.begin());
200*b198f16eSAdam Balogh const auto i4 = return_any_iterator(V2.begin());
201*b198f16eSAdam Balogh
202*b198f16eSAdam Balogh const auto i5 = std::find_first_of(std::execution::sequenced_policy(),
203*b198f16eSAdam Balogh i1, i2, i3, i4, odd);
204*b198f16eSAdam Balogh
205*b198f16eSAdam Balogh clang_analyzer_eval(i5 == i2); // expected-warning{{FALSE}}}
206*b198f16eSAdam Balogh
207*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
208*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
209*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
210*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
211*b198f16eSAdam Balogh
212*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
213*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
214*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
215*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
216*b198f16eSAdam Balogh }
217*b198f16eSAdam Balogh
test_find_end1(std::vector<int> V1,std::vector<int> V2)218*b198f16eSAdam Balogh void test_find_end1(std::vector<int> V1, std::vector<int> V2) {
219*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V1.begin());
220*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V1.begin());
221*b198f16eSAdam Balogh const auto i3 = return_any_iterator(V2.begin());
222*b198f16eSAdam Balogh const auto i4 = return_any_iterator(V2.begin());
223*b198f16eSAdam Balogh
224*b198f16eSAdam Balogh const auto i5 = std::find_end(i1, i2, i3, i4);
225*b198f16eSAdam Balogh
226*b198f16eSAdam Balogh clang_analyzer_eval(i5 == i2); // expected-warning{{FALSE}}}
227*b198f16eSAdam Balogh
228*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
229*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
230*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
231*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
232*b198f16eSAdam Balogh
233*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
234*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
235*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
236*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
237*b198f16eSAdam Balogh }
238*b198f16eSAdam Balogh
test_find_end2(std::vector<int> V1,std::vector<int> V2)239*b198f16eSAdam Balogh void test_find_end2(std::vector<int> V1, std::vector<int> V2) {
240*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V1.begin());
241*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V1.begin());
242*b198f16eSAdam Balogh const auto i3 = return_any_iterator(V2.begin());
243*b198f16eSAdam Balogh const auto i4 = return_any_iterator(V2.begin());
244*b198f16eSAdam Balogh
245*b198f16eSAdam Balogh const auto i5 = std::find_end(std::execution::sequenced_policy(),
246*b198f16eSAdam Balogh i1, i2, i3, i4);
247*b198f16eSAdam Balogh
248*b198f16eSAdam Balogh clang_analyzer_eval(i5 == i2); // expected-warning{{FALSE}}}
249*b198f16eSAdam Balogh
250*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
251*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
252*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
253*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
254*b198f16eSAdam Balogh
255*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
256*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
257*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
258*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
259*b198f16eSAdam Balogh }
260*b198f16eSAdam Balogh
test_find_end3(std::vector<int> V1,std::vector<int> V2)261*b198f16eSAdam Balogh void test_find_end3(std::vector<int> V1, std::vector<int> V2) {
262*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V1.begin());
263*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V1.begin());
264*b198f16eSAdam Balogh const auto i3 = return_any_iterator(V2.begin());
265*b198f16eSAdam Balogh const auto i4 = return_any_iterator(V2.begin());
266*b198f16eSAdam Balogh
267*b198f16eSAdam Balogh const auto i5 = std::find_end(i1, i2, i3, i4, odd);
268*b198f16eSAdam Balogh
269*b198f16eSAdam Balogh clang_analyzer_eval(i5 == i2); // expected-warning{{FALSE}}}
270*b198f16eSAdam Balogh
271*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
272*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
273*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
274*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
275*b198f16eSAdam Balogh
276*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
277*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
278*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
279*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
280*b198f16eSAdam Balogh }
281*b198f16eSAdam Balogh
test_find_end4(std::vector<int> V1,std::vector<int> V2)282*b198f16eSAdam Balogh void test_find_end4(std::vector<int> V1, std::vector<int> V2) {
283*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V1.begin());
284*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V1.begin());
285*b198f16eSAdam Balogh const auto i3 = return_any_iterator(V2.begin());
286*b198f16eSAdam Balogh const auto i4 = return_any_iterator(V2.begin());
287*b198f16eSAdam Balogh
288*b198f16eSAdam Balogh const auto i5 = std::find_end(std::execution::sequenced_policy(),
289*b198f16eSAdam Balogh i1, i2, i3, i4, odd);
290*b198f16eSAdam Balogh
291*b198f16eSAdam Balogh clang_analyzer_eval(i5 == i2); // expected-warning{{FALSE}}}
292*b198f16eSAdam Balogh
293*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
294*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
295*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
296*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
297*b198f16eSAdam Balogh
298*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
299*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
300*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
301*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
302*b198f16eSAdam Balogh }
303*b198f16eSAdam Balogh
304*b198f16eSAdam Balogh bool compare(int, int);
305*b198f16eSAdam Balogh
test_lower_bound1(std::vector<int> V,int n)306*b198f16eSAdam Balogh void test_lower_bound1(std::vector<int> V, int n) {
307*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V.begin());
308*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V.begin());
309*b198f16eSAdam Balogh
310*b198f16eSAdam Balogh const auto i3 = std::lower_bound(i1, i2, n);
311*b198f16eSAdam Balogh
312*b198f16eSAdam Balogh clang_analyzer_eval(i3 == i2); // expected-warning{{FALSE}}}
313*b198f16eSAdam Balogh
314*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
315*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
316*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
317*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
318*b198f16eSAdam Balogh
319*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
320*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
321*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
322*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
323*b198f16eSAdam Balogh }
324*b198f16eSAdam Balogh
test_lower_bound2(std::vector<int> V,int n)325*b198f16eSAdam Balogh void test_lower_bound2(std::vector<int> V, int n) {
326*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V.begin());
327*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V.begin());
328*b198f16eSAdam Balogh
329*b198f16eSAdam Balogh const auto i3 = std::lower_bound(i1, i2, n, compare);
330*b198f16eSAdam Balogh
331*b198f16eSAdam Balogh clang_analyzer_eval(i3 == i2); // expected-warning{{FALSE}}}
332*b198f16eSAdam Balogh
333*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
334*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
335*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
336*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
337*b198f16eSAdam Balogh
338*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
339*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
340*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
341*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
342*b198f16eSAdam Balogh }
343*b198f16eSAdam Balogh
test_upper_bound1(std::vector<int> V,int n)344*b198f16eSAdam Balogh void test_upper_bound1(std::vector<int> V, int n) {
345*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V.begin());
346*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V.begin());
347*b198f16eSAdam Balogh
348*b198f16eSAdam Balogh const auto i3 = std::upper_bound(i1, i2, n);
349*b198f16eSAdam Balogh
350*b198f16eSAdam Balogh clang_analyzer_eval(i3 == i2); // expected-warning{{FALSE}}}
351*b198f16eSAdam Balogh
352*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
353*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
354*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
355*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
356*b198f16eSAdam Balogh
357*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
358*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
359*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
360*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
361*b198f16eSAdam Balogh }
362*b198f16eSAdam Balogh
test_upper_bound2(std::vector<int> V,int n)363*b198f16eSAdam Balogh void test_upper_bound2(std::vector<int> V, int n) {
364*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V.begin());
365*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V.begin());
366*b198f16eSAdam Balogh
367*b198f16eSAdam Balogh const auto i3 = std::upper_bound(i1, i2, n, compare);
368*b198f16eSAdam Balogh
369*b198f16eSAdam Balogh clang_analyzer_eval(i3 == i2); // expected-warning{{FALSE}}}
370*b198f16eSAdam Balogh
371*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
372*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
373*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
374*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
375*b198f16eSAdam Balogh
376*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
377*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
378*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
379*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
380*b198f16eSAdam Balogh }
381*b198f16eSAdam Balogh
test_search1(std::vector<int> V1,std::vector<int> V2)382*b198f16eSAdam Balogh void test_search1(std::vector<int> V1, std::vector<int> V2) {
383*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V1.begin());
384*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V1.begin());
385*b198f16eSAdam Balogh const auto i3 = return_any_iterator(V2.begin());
386*b198f16eSAdam Balogh const auto i4 = return_any_iterator(V2.begin());
387*b198f16eSAdam Balogh
388*b198f16eSAdam Balogh const auto i5 = std::search(i1, i2, i3, i4);
389*b198f16eSAdam Balogh
390*b198f16eSAdam Balogh clang_analyzer_eval(i5 == i2); // expected-warning{{FALSE}}}
391*b198f16eSAdam Balogh
392*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
393*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
394*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
395*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
396*b198f16eSAdam Balogh
397*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
398*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
399*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
400*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
401*b198f16eSAdam Balogh }
402*b198f16eSAdam Balogh
test_search2(std::vector<int> V1,std::vector<int> V2)403*b198f16eSAdam Balogh void test_search2(std::vector<int> V1, std::vector<int> V2) {
404*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V1.begin());
405*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V1.begin());
406*b198f16eSAdam Balogh const auto i3 = return_any_iterator(V2.begin());
407*b198f16eSAdam Balogh const auto i4 = return_any_iterator(V2.begin());
408*b198f16eSAdam Balogh
409*b198f16eSAdam Balogh const auto i5 = std::search(std::execution::sequenced_policy(),
410*b198f16eSAdam Balogh i1, i2, i3, i4);
411*b198f16eSAdam Balogh
412*b198f16eSAdam Balogh clang_analyzer_eval(i5 == i2); // expected-warning{{FALSE}}}
413*b198f16eSAdam Balogh
414*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
415*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
416*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
417*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
418*b198f16eSAdam Balogh
419*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
420*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
421*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
422*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
423*b198f16eSAdam Balogh }
424*b198f16eSAdam Balogh
test_search3(std::vector<int> V1,std::vector<int> V2)425*b198f16eSAdam Balogh void test_search3(std::vector<int> V1, std::vector<int> V2) {
426*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V1.begin());
427*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V1.begin());
428*b198f16eSAdam Balogh const auto i3 = return_any_iterator(V2.begin());
429*b198f16eSAdam Balogh const auto i4 = return_any_iterator(V2.begin());
430*b198f16eSAdam Balogh
431*b198f16eSAdam Balogh const auto i5 = std::search(i1, i2, i3, i4, odd);
432*b198f16eSAdam Balogh
433*b198f16eSAdam Balogh clang_analyzer_eval(i5 == i2); // expected-warning{{FALSE}}}
434*b198f16eSAdam Balogh
435*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
436*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
437*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
438*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
439*b198f16eSAdam Balogh
440*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
441*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
442*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
443*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
444*b198f16eSAdam Balogh }
445*b198f16eSAdam Balogh
test_search4(std::vector<int> V1,std::vector<int> V2)446*b198f16eSAdam Balogh void test_search4(std::vector<int> V1, std::vector<int> V2) {
447*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V1.begin());
448*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V1.begin());
449*b198f16eSAdam Balogh const auto i3 = return_any_iterator(V2.begin());
450*b198f16eSAdam Balogh const auto i4 = return_any_iterator(V2.begin());
451*b198f16eSAdam Balogh
452*b198f16eSAdam Balogh const auto i5 = std::search(std::execution::sequenced_policy(),
453*b198f16eSAdam Balogh i1, i2, i3, i4, odd);
454*b198f16eSAdam Balogh
455*b198f16eSAdam Balogh clang_analyzer_eval(i5 == i2); // expected-warning{{FALSE}}}
456*b198f16eSAdam Balogh
457*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
458*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
459*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
460*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
461*b198f16eSAdam Balogh
462*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
463*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
464*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
465*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
466*b198f16eSAdam Balogh }
467*b198f16eSAdam Balogh
test_search5(std::vector<int> V1,std::vector<int> V2)468*b198f16eSAdam Balogh void test_search5(std::vector<int> V1, std::vector<int> V2) {
469*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V1.begin());
470*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V1.begin());
471*b198f16eSAdam Balogh const auto i3 = return_any_iterator(V2.begin());
472*b198f16eSAdam Balogh const auto i4 = return_any_iterator(V2.begin());
473*b198f16eSAdam Balogh
474*b198f16eSAdam Balogh const auto i5 = std::search(i1, i2, std::default_searcher(i3, i4));
475*b198f16eSAdam Balogh
476*b198f16eSAdam Balogh clang_analyzer_eval(i5 == i2); // expected-warning{{FALSE}}}
477*b198f16eSAdam Balogh
478*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
479*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
480*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
481*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
482*b198f16eSAdam Balogh
483*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) <
484*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
485*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i5) >=
486*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
487*b198f16eSAdam Balogh }
488*b198f16eSAdam Balogh
test_search_n1(std::vector<int> V,int n)489*b198f16eSAdam Balogh void test_search_n1(std::vector<int> V, int n) {
490*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V.begin());
491*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V.begin());
492*b198f16eSAdam Balogh
493*b198f16eSAdam Balogh const auto i3 = std::search_n(i1, i2, 2, n);
494*b198f16eSAdam Balogh
495*b198f16eSAdam Balogh clang_analyzer_eval(i3 == i2); // expected-warning{{FALSE}}}
496*b198f16eSAdam Balogh
497*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
498*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
499*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
500*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
501*b198f16eSAdam Balogh
502*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
503*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
504*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
505*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
506*b198f16eSAdam Balogh }
507*b198f16eSAdam Balogh
test_search_n2(std::vector<int> V,int n)508*b198f16eSAdam Balogh void test_search_n2(std::vector<int> V, int n) {
509*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V.begin());
510*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V.begin());
511*b198f16eSAdam Balogh
512*b198f16eSAdam Balogh const auto i3 = std::search_n(std::execution::sequenced_policy(),
513*b198f16eSAdam Balogh i1, i2, 2, n);
514*b198f16eSAdam Balogh
515*b198f16eSAdam Balogh clang_analyzer_eval(i3 == i2); // expected-warning{{FALSE}}}
516*b198f16eSAdam Balogh
517*b198f16eSAdam Balogh
518*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
519*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
520*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
521*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
522*b198f16eSAdam Balogh
523*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
524*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
525*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
526*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
527*b198f16eSAdam Balogh }
528*b198f16eSAdam Balogh
test_search_n3(std::vector<int> V,int n)529*b198f16eSAdam Balogh void test_search_n3(std::vector<int> V, int n) {
530*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V.begin());
531*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V.begin());
532*b198f16eSAdam Balogh
533*b198f16eSAdam Balogh const auto i3 = std::search_n(i1, i2, 2, n, compare);
534*b198f16eSAdam Balogh
535*b198f16eSAdam Balogh clang_analyzer_eval(i3 == i2); // expected-warning{{FALSE}}}
536*b198f16eSAdam Balogh
537*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
538*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
539*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
540*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
541*b198f16eSAdam Balogh
542*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
543*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
544*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
545*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
546*b198f16eSAdam Balogh }
547*b198f16eSAdam Balogh
test_search_n4(std::vector<int> V,int n)548*b198f16eSAdam Balogh void test_search_n4(std::vector<int> V, int n) {
549*b198f16eSAdam Balogh const auto i1 = return_any_iterator(V.begin());
550*b198f16eSAdam Balogh const auto i2 = return_any_iterator(V.begin());
551*b198f16eSAdam Balogh
552*b198f16eSAdam Balogh const auto i3 = std::search_n(std::execution::sequenced_policy(),
553*b198f16eSAdam Balogh i1, i2, 2, n, compare);
554*b198f16eSAdam Balogh
555*b198f16eSAdam Balogh clang_analyzer_eval(i3 == i2); // expected-warning{{FALSE}}}
556*b198f16eSAdam Balogh
557*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
558*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{TRUE}}
559*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
560*b198f16eSAdam Balogh clang_analyzer_iterator_position(i1)); // expected-warning@-1{{FALSE}}
561*b198f16eSAdam Balogh
562*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) <
563*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{TRUE}}
564*b198f16eSAdam Balogh clang_analyzer_eval(clang_analyzer_iterator_position(i3) >=
565*b198f16eSAdam Balogh clang_analyzer_iterator_position(i2)); // expected-warning@-1{{FALSE}}
566*b198f16eSAdam Balogh }
567