)]}'
{
  "commit": "789859ea81296c3ebfc2bc70e4ac4631ee248fd5",
  "tree": "7ed28255f2e8505a781a137d94689fc8dfebffb4",
  "parents": [
    "af093a81777ecefe9c69600aee65ce69bae07d7b"
  ],
  "author": {
    "name": "Max191",
    "email": "44243577+Max191@users.noreply.github.com",
    "time": "Tue Jan 27 15:46:01 2026 -0500"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Jan 27 15:46:01 2026 -0500"
  },
  "message": "[Codegen] Use safer hoisting in OptimizeTensorInsertExtractSlices (#23280)\n\nUse the `moveLoopInvariantCodeFromGuaranteedLoops` transform instead of\nthe `moveLoopInvariantCode` transform in the\nOptimizeTensorInsertExtractSlices pass. This transform is safer, because\nit validates that loops will be executed at least once before hoisting\nloop invariant code. Hoisting from loops that may not execute is not an\noptimization, so this is a better version of the transformation.\n\nThe new safer transform also hoists from linalg.generic ops, so the\n`moveLoopInvariantCodeFromGenericOps` is removed, since it is no longer\nused.\n\nThis PR also removes the\n`_batch_matmul_narrow_n_2_dispatch_4_unpack_i32` test, which was doing\nnothing but checking that a tensor.empty op gets hoisted from an scf.for\nloop (which cannot be guaranteed to execute). Hoisting empty tensors is\nnot the job of this pass, and the test is verbose, so the test is simply\nremoved.\n\nSigned-off-by: Max Dawkins \u003cmax.dawkins@gmail.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ef4fbe5ad5f9bb83e06f4393ddb0ca535b383339",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/OptimizeTensorInsertExtractSlices.cpp",
      "new_id": "0eabebe919c6d84560a8327e3601bbdc2c4b21e0",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/OptimizeTensorInsertExtractSlices.cpp"
    },
    {
      "type": "modify",
      "old_id": "d17dcd08647d4e6ef3d34da19a2a8772f7ef4f5d",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/test/optimize_tensor_insert_extract_slices.mlir",
      "new_id": "a3d36fb3e9d96b039ea39d3dbc7d6afd579f77a3",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/test/optimize_tensor_insert_extract_slices.mlir"
    },
    {
      "type": "modify",
      "old_id": "bd7a5f77f50e89146d3b3e645da783d6e1f7949c",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/LLVMGPU/test/winograd_pipeline_test.mlir",
      "new_id": "1523a6b81ebe7c726de44a997c35fee2b6631c6f",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/LLVMGPU/test/winograd_pipeline_test.mlir"
    }
  ]
}
