brintos

brintos / llvm-project-archived public Read only

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