)]}'
{
  "commit": "eb7846f1875967a944da9e36bcc1267e8d7544c4",
  "tree": "bcd89f456869cff35fc16e538802f9450121b1a3",
  "parents": [
    "ccad585a1894d4640813b65daa90280c7e717d56"
  ],
  "author": {
    "name": "smart-moomoo",
    "email": "rhao8608@gmail.com",
    "time": "Wed Oct 14 00:34:04 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Oct 14 07:34:04 2026 +0000"
  },
  "message": "[Codegen] Forward temporary DPS output copies (#24727)\n\nDestination-passing-style (DPS) operations update explicit init\noperands. After tensor-to-memref bufferization preserves tensor value\nsemantics, an update of a dispatch output may be represented by a\nprivate temporary:\n\n  %temp \u003d memref.alloc()\n  memref.copy %source, %temp\n  linalg.generic ... outs(%temp)\n  memref.copy %temp, %target\n\nForward the final target through this chain:\n\n  memref.copy %source, %target\n  linalg.generic ... outs(%target)\n\nThis removes the private allocation and copy-out. The copy-in is\nredirected to %target rather than removed because the DPS operation may\nstill read its init operand.\n\nReject the rewrite when the copy source or another DPS operand may alias\nthe final target, or when an intervening operation may access that\ntarget. These checks prevent moving target writes ahead of reads that\nobserved its previous contents.\n\nMLIR alias analysis handles ordinary local values but does not\ndistinguish all IREE storage roots. Refine it with dispatch ABI facts:\ndifferent HAL interface binding ordinals and different memref global\nsymbols are disjoint; subspans of the same binding may overlap because\ntheir byte offsets can be dynamic; and local allocations are disjoint\nfrom bindings and globals. Unknown roots remain conservative.\n\nRun the pass after bufferization has made the allocation and copies\nexplicit and before Linalg/LinalgExt lowering removes the DPS init\noperands needed to retarget the operation.\n\n---------\n\nSigned-off-by: Yuwei Sun \u003cyuweis2@illinois.edu\u003e\nSigned-off-by: Hao Ren \u003crhao8608@gmail.com\u003e\nCo-authored-by: Yuwei Sun \u003cyuweis2@illinois.edu\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b28be7ab5d835ec194581caafb20345257437040",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/BUILD.bazel",
      "new_id": "c07b5f8313b746fea46c0d6613a25e277714affb",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "1e52247b9f5a0f5ed9e8fb9b2b8eed7d5f0e01f5",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/CMakeLists.txt",
      "new_id": "694401aa4ace284389ca2a32483648d4ae2ab224",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "93f1bb75940d69577aa116c646cee6b5e2b98e62",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/FoldMemRefCopyIntoDPSOps.cpp"
    },
    {
      "type": "modify",
      "old_id": "65c21c4ec73112f8fba13cf01a698020f780247c",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/Passes.td",
      "new_id": "ca0da66012aeb79cf245c13528606ded7acb6264",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/Passes.td"
    },
    {
      "type": "modify",
      "old_id": "4f7818a8360f54571925a7602f855895a0567080",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/test/BUILD.bazel",
      "new_id": "a49caa6b1adf2c9aa407165d41adcfd95c56e6e1",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/test/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "05d1bc0a0d815b29369310a717e3dceb92dda4d7",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/test/CMakeLists.txt",
      "new_id": "9e293b435c39687f09ff4978c66a378cbc14fa89",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/test/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "173b1aae05e0e60c815bd6354606a45344cfcd83",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/test/fold_memref_copy_into_dps_ops.mlir"
    },
    {
      "type": "modify",
      "old_id": "107b4460bd756ba847c37e38aa90881bcf246ed6",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/LLVMGPU/Passes.cpp",
      "new_id": "61a02a1f5190f1da8ac833e541a79f55f9358760",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/LLVMGPU/Passes.cpp"
    }
  ]
}
