1 // RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,cplusplus,alpha.cplusplus.InvalidatedIterator -analyzer-eagerly-assume -analyzer-config aggressive-relational-comparison-simplification=true -analyzer-config c++-container-inlining=false %s -verify 2 // RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,cplusplus,alpha.cplusplus.InvalidatedIterator -analyzer-eagerly-assume -analyzer-config aggressive-relational-comparison-simplification=true -analyzer-config c++-container-inlining=true -DINLINE=1 %s -verify 3 4 #include "Inputs/system-header-simulator-cxx.h" 5 6 void bad_copy_assign_operator_list1(std::list<int> &L1, 7 const std::list<int> &L2) { 8 auto i0 = L1.cbegin(); 9 L1 = L2; 10 *i0; // expected-warning{{Invalidated iterator accessed}} 11 } 12 13 void bad_copy_assign_operator_vector1(std::vector<int> &V1, 14 const std::vector<int> &V2) { 15 auto i0 = V1.cbegin(); 16 V1 = V2; 17 *i0; // expected-warning{{Invalidated iterator accessed}} 18 } 19 20 void bad_copy_assign_operator_deque1(std::deque<int> &D1, 21 const std::deque<int> &D2) { 22 auto i0 = D1.cbegin(); 23 D1 = D2; 24 *i0; // expected-warning{{Invalidated iterator accessed}} 25 } 26 27 void bad_copy_assign_operator_forward_list1(std::forward_list<int> &FL1, 28 const std::forward_list<int> &FL2) { 29 auto i0 = FL1.cbegin(); 30 FL1 = FL2; 31 *i0; // expected-warning{{Invalidated iterator accessed}} 32 } 33