)]}'
{
  "commit": "ef208564acbfc9e8fef0d6c436bac1681f1a6778",
  "tree": "ebce0bcc9ffaeb26f40a4c7c9d92fd6d2f4935b9",
  "parents": [
    "2189cea443f1bb69861af2a1994b11f5aaa5be68"
  ],
  "author": {
    "name": "Kareem Ergawy",
    "email": "kergawy@nvidia.com",
    "time": "Wed Sep 09 13:28:23 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Sep 09 13:28:23 2026 +0200"
  },
  "message": "[fir][aa] Add opt-in cache for use by fir `AliasAnalysis` clients (#221973)\n\nAdds `AliasAnalysisRecursiveEffectsCache`, an opt-in cache that memoizes\nper-operation read/write summaries so that `getModRef` on an operation\nwith `HasRecursiveMemoryEffects` does not re-walk its nested regions on\nevery query.\n\nThis is independent of the `getSource()` memoization added separately:\nthat one is keyed on (value, flags) and answers \"what memory does this\nvalue refer to\", while this one is keyed on the operation and answers\n\"what does this operation and everything nested in it read and write\".\nLICM enables both, since it only hoists pure-read ops and so invalidates\nneither.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "98d92e683a2a7c103354823e67ff052319f2e1f2",
      "old_mode": 33188,
      "old_path": "flang/include/flang/Optimizer/Analysis/AliasAnalysis.h",
      "new_id": "d9429e96e208db5e13b85cefbff20e1ae2e5b1ad",
      "new_mode": 33188,
      "new_path": "flang/include/flang/Optimizer/Analysis/AliasAnalysis.h"
    },
    {
      "type": "modify",
      "old_id": "32429d554b7a1a231f1b78edece04335734d888a",
      "old_mode": 33188,
      "old_path": "flang/lib/Optimizer/Analysis/AliasAnalysis.cpp",
      "new_id": "5d60b373b0819c3a3c252fe02337c1762f778311",
      "new_mode": 33188,
      "new_path": "flang/lib/Optimizer/Analysis/AliasAnalysis.cpp"
    },
    {
      "type": "modify",
      "old_id": "de944ef07fbacd8d7ffcb3b53d404b10e2421f04",
      "old_mode": 33188,
      "old_path": "flang/lib/Optimizer/Transforms/LoopInvariantCodeMotion.cpp",
      "new_id": "97958003ddfd27f07c5285a9e7490a6bb6756ee6",
      "new_mode": 33188,
      "new_path": "flang/lib/Optimizer/Transforms/LoopInvariantCodeMotion.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b559790e85d2ec49d6a03ac972be89389188a3cd",
      "new_mode": 33188,
      "new_path": "flang/unittests/Optimizer/AliasAnalysisRecursiveEffectsCacheTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "0e0c12b21bb566290d2022ef5f866b5f1e21f693",
      "old_mode": 33188,
      "old_path": "flang/unittests/Optimizer/CMakeLists.txt",
      "new_id": "51610776147d0dcde761180fc2d8c28272d0193c",
      "new_mode": 33188,
      "new_path": "flang/unittests/Optimizer/CMakeLists.txt"
    }
  ]
}
