)]}'
{
  "commit": "2bd098b819c19ccca082ebdc7042211bd68cb3b1",
  "tree": "55d8511ee5a2f985e7f93865ef552c58b078afae",
  "parents": [
    "cf4f3340ba062cdb3ce95c4a600c61bec2862c5c"
  ],
  "author": {
    "name": "Arseniy Zaostrovnykh",
    "email": "necto.ne@gmail.com",
    "time": "Mon Jun 08 12:22:03 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Jun 08 12:22:03 2026 +0200"
  },
  "message": "[analyzer] Trigger checkLifetimeEnd callback from CFGLifetimeEnds element\n\nThis patch adds handling of the `CFGLifetimeEnd` element to the CSA, and\nproduces a newly created callback `checkLifetimeEnd` for each occurrence\nof it.\n\nIt is useful to implement detection of dangling pointers as in:\n\n```\nvoid su_use_after_block ()  { int* p\u003d0; { int x\u003d1; p\u003d\u0026x; } *p \u003d 2; }\n//                                                       ^ p dangles\n```\n\nThis patch does not implement the check itself. it is motivated by the\ndiscussion in\n\nhttps://discourse.llvm.org/t/what-is-the-status-of-scopeend-and-scopebegin/90861\n\n--\nupstreamed part of CPP-4539\n\n---------\n\nCo-authored-by: tomasz-kaminski-sonarsource \u003ctomasz.kaminski@sonarsource.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6c214d9ce10e25a1ad81e1cbbb6db791a6cab114",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Analysis/CFG.h",
      "new_id": "2079f99046021f2df8515c7c068add11e2a0b4b0",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Analysis/CFG.h"
    },
    {
      "type": "modify",
      "old_id": "c098160c68b56e473e1e27e5b37a099d18a280c1",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Analysis/ProgramPoint.h",
      "new_id": "02eb3992e07c4ae84708c0e3142cc63373028a96",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Analysis/ProgramPoint.h"
    },
    {
      "type": "modify",
      "old_id": "ab38a05bfd79dc897cda51e70af7f1cb1c9cf108",
      "old_mode": 33188,
      "old_path": "clang/include/clang/StaticAnalyzer/Core/Checker.h",
      "new_id": "249d9c512f7a981480dc7a3bfcb21fef479a53f9",
      "new_mode": 33188,
      "new_path": "clang/include/clang/StaticAnalyzer/Core/Checker.h"
    },
    {
      "type": "modify",
      "old_id": "9d352960c1db722c94cb7ccb1bf5ee98859e8538",
      "old_mode": 33188,
      "old_path": "clang/include/clang/StaticAnalyzer/Core/CheckerManager.h",
      "new_id": "3311774f069eab2716f0b6604320a0f8ffc959bc",
      "new_mode": 33188,
      "new_path": "clang/include/clang/StaticAnalyzer/Core/CheckerManager.h"
    },
    {
      "type": "modify",
      "old_id": "e4ddabbe9c927cd71babeb6ec4171b94fef7c799",
      "old_mode": 33188,
      "old_path": "clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h",
      "new_id": "bb2de45cec92a1b8de2ca576e457a34a2e3f3a7b",
      "new_mode": 33188,
      "new_path": "clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h"
    },
    {
      "type": "modify",
      "old_id": "24fed40a93ed1cc707b815d605924c41c5772b23",
      "old_mode": 33188,
      "old_path": "clang/lib/Analysis/PathDiagnostic.cpp",
      "new_id": "a95ef4582be99a4e2e28607410d5217c747e3dde",
      "new_mode": 33188,
      "new_path": "clang/lib/Analysis/PathDiagnostic.cpp"
    },
    {
      "type": "modify",
      "old_id": "11c8c8242eb1991d1db49e4b876e05df2cbeec66",
      "old_mode": 33188,
      "old_path": "clang/lib/Analysis/ProgramPoint.cpp",
      "new_id": "bca2581d923b671d76a235392090a5f538eda01d",
      "new_mode": 33188,
      "new_path": "clang/lib/Analysis/ProgramPoint.cpp"
    },
    {
      "type": "modify",
      "old_id": "35603e333bf178cfa3f93b374f6301bac9c7e67f",
      "old_mode": 33188,
      "old_path": "clang/lib/StaticAnalyzer/Core/CheckerManager.cpp",
      "new_id": "80c03899d1e3996d039c9bc6bddb1e59496936d8",
      "new_mode": 33188,
      "new_path": "clang/lib/StaticAnalyzer/Core/CheckerManager.cpp"
    },
    {
      "type": "modify",
      "old_id": "2a64e340ed2141cb35672e229592692694ed91f7",
      "old_mode": 33188,
      "old_path": "clang/lib/StaticAnalyzer/Core/CoreEngine.cpp",
      "new_id": "b38dfdfa6f2c40de7efad314f8edf6c5423c1bfb",
      "new_mode": 33188,
      "new_path": "clang/lib/StaticAnalyzer/Core/CoreEngine.cpp"
    },
    {
      "type": "modify",
      "old_id": "5b978cc540059e5ee0f6e28af2429d50c7b36f2a",
      "old_mode": 33188,
      "old_path": "clang/lib/StaticAnalyzer/Core/ExplodedGraph.cpp",
      "new_id": "454eff97511b11bcf41e59896fd3ee55bea9d353",
      "new_mode": 33188,
      "new_path": "clang/lib/StaticAnalyzer/Core/ExplodedGraph.cpp"
    },
    {
      "type": "modify",
      "old_id": "34ca88705cba63270e043c16c8330213b1212745",
      "old_mode": 33188,
      "old_path": "clang/lib/StaticAnalyzer/Core/ExprEngine.cpp",
      "new_id": "32da5e097c76e47f307014e268a065c509eb0878",
      "new_mode": 33188,
      "new_path": "clang/lib/StaticAnalyzer/Core/ExprEngine.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "198dae4cbb4615d219c054ad843977c3ddf88ebf",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/lifetime-end-simple-cfg-output.cpp"
    },
    {
      "type": "modify",
      "old_id": "ed16a1372bea21754c2b80c5a31d3b9c1f1f3796",
      "old_mode": 33188,
      "old_path": "clang/unittests/StaticAnalyzer/CMakeLists.txt",
      "new_id": "943850e49b0b5cc4cdc902f94a8adc573c62b373",
      "new_mode": 33188,
      "new_path": "clang/unittests/StaticAnalyzer/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "03185f63b5fc83643fd1ab64945ea5f8bb4b97da",
      "new_mode": 33188,
      "new_path": "clang/unittests/StaticAnalyzer/CheckLifetimeEndTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "c4c6e7a9a896d701383d6d632e635987c9fc2696",
      "old_mode": 33188,
      "old_path": "clang/unittests/StaticAnalyzer/CheckerRegistration.h",
      "new_id": "75b04f5dabd69c302609f6fd9d086705c1cbbfa4",
      "new_mode": 33188,
      "new_path": "clang/unittests/StaticAnalyzer/CheckerRegistration.h"
    }
  ]
}
