[clang] [clang][analyzer] Detect use-after-move for 3-arg std::move (PR #196602)

Benedek Kaibas via cfe-commits cfe-commits at lists.llvm.org
Tue Jun 2 04:21:17 PDT 2026


================
@@ -0,0 +1,29 @@
+// RUN: %clang_analyze_cc1 -std=c++17 -analyzer-checker=core,cplusplus.Move,alpha.cplusplus.IteratorModeling -analyzer-config aggressive-binary-operation-simplification=true -analyzer-config c++-container-inlining=false %s -verify -analyzer-config display-checker-name=false
+
+#include "Inputs/system-header-simulator-cxx.h"
+
+
+//===----------------------------------------------------------------------===//
+// Test suite for test functions that require both MoveChecker.cpp and
+// IteratorModeling.cpp to be enabled.
+// NOTE: Currently the iterator dereference detection is only working when
+// IteratorModeling is enabled.
+//===----------------------------------------------------------------------===//
+
+void iteratorDerefSource() {
+  std::list<std::string> l1;
+  l1.push_back("l1");
+  std::list<std::string> l2;
+
+  std::move(l1.begin(), l1.end(), std::back_inserter(l2));
+  *l1.cbegin(); // expected-warning {{Method called on moved-from object 'l1'}}
+}
+
+void iteratorDerefDest() {
----------------
benedekaibas wrote:

Yes, that would be important. I have already added test case for vectors, but not for associative containers. I will include that too.

https://github.com/llvm/llvm-project/pull/196602


More information about the cfe-commits mailing list