)]}'
{
  "commit": "d960583ed167ba7769a4a819090979462949cc74",
  "tree": "769f4d26d2f29e251f3f1ef45be29c0f942cb196",
  "parents": [
    "3faafcc10ac5ebe6ab19513923c169a543d6d350"
  ],
  "author": {
    "name": "Valentin Churavy",
    "email": "v.churavy@gmail.com",
    "time": "Wed Oct 07 16:52:10 2026 +0200"
  },
  "committer": {
    "name": "Valentin Churavy",
    "email": "v.churavy@gmail.com",
    "time": "Wed Oct 07 16:52:28 2026 +0200"
  },
  "message": "Retype stack slots that cache a pointer to an allocation moved to the stack\n\nWhen LowerAllocAddr moves an allocation back to the stack, a pointer derived\nfrom it may have been stored into a reverse-pass cache, for example a phi\nthat cannot be recomputed. RecursivelyReplaceAddressSpace only handled stores\nthrough the moved pointer, so such a cache store failed with \"Illegal address\nspace propagation\". Casting the stack pointer back to a tracked address space\nwould put a stack address where the GC looks for objects. Instead, when the\nslot is an alloca that only holds this value (plus constant stores), replace\nit with an alloca of the new pointer type and follow each load from it as a\nvalue derived from the moved allocation.\n\nThis is what broke Enzyme.jl\u0027s Flux LSTM/GRU integration tests on Julia\n1.11. It replaces the earlier enzyme_fromstack guard on the null-check\nexception from #3266, which is reverted here.\n\nAssisted-by: Claude Code (Opus 5.5)\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cbe575700a6ef9464b74272c084e3b80a885ce51",
      "old_mode": 33188,
      "old_path": "enzyme/Enzyme/FunctionUtils.cpp",
      "new_id": "c20130179c13e77584a276c947ba0ee4dd0be955",
      "new_mode": 33188,
      "new_path": "enzyme/Enzyme/FunctionUtils.cpp"
    },
    {
      "type": "modify",
      "old_id": "d4f1c5a43c07b6db20f36bcacd5001fdfefc6cfc",
      "old_mode": 33188,
      "old_path": "enzyme/Enzyme/GradientUtils.cpp",
      "new_id": "fa15b96491691d4e5f818483568a9a12c6978ee2",
      "new_mode": 33188,
      "new_path": "enzyme/Enzyme/GradientUtils.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "24adbb65e5eb216262a34d1e7879041c924e9c16",
      "new_mode": 33188,
      "new_path": "enzyme/test/Enzyme/ReverseMode/backstack_cache.ll"
    }
  ]
}
