Szelethus added a comment. I chased my own tail for weeks before realizing that there is indeed another instance when a live **statement** is stored, other then `ObjCForCollectionStmt`...
void clang_analyzer_eval(bool); void test_lambda_refcapture() { int a = 6; [&](int &a) { a = 42; }(a); clang_analyzer_eval(a == 42); // expected-warning{{TRUE}} } // CHECK: [ B0 (live statements at block exit) ] // CHECK-EMPTY: // CHECK-EMPTY: // CHECK-NEXT: [ B1 (live statements at block exit) ] // CHECK-EMPTY: // CHECK-EMPTY: // CHECK-NEXT: [ B2 (live statements at block exit) ] // CHECK-EMPTY: // CHECK-NEXT: CompoundStmt {{.*}} // CHECK-NEXT: `-BinaryOperator {{.*}} 'int' lvalue '=' // CHECK-NEXT: |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'a' 'int &' // CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 42 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D82598/new/ https://reviews.llvm.org/D82598 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits