)]}'
{
  "commit": "d6f6cdaddadb9929dd6778697b3ea422acae2c08",
  "tree": "0f7d15230c46a94d9127fa81c6d8ad7c5a624793",
  "parents": [
    "9076ffffdca4ca9573936ce6f7565ff628a12dc1"
  ],
  "author": {
    "name": "Michal Paszkowski",
    "email": "michal@michalpaszkowski.com",
    "time": "Sun May 10 02:38:34 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sun May 10 02:38:34 2026 -0700"
  },
  "message": "[SPIR-V] Fix inttoptr type deduction with ptr.annotation (#189219)\n\nOpaque pointer inttoptr was recording ptr as a pointee type, so\nOpConvertUToPtr was emitted as pointer-to-pointer and then bitcasted\nback. Please see an example below.\n\nLLVM IR:\n```\n%p \u003d inttoptr i64 %x to ptr addrspace(1)\n%a \u003d call ptr addrspace(1) @llvm.ptr.annotation(... %p ...)\ncall spir_func void @prefetch(ptr addrspace(1) %a, ...)\n```\n\nSPIR-V (before the change):\n```\n%p2 \u003d OpConvertUToPtr %_ptr_CrossWorkgroup__ptr_CrossWorkgroup_uchar %x\n%p1 \u003d OpBitcast %_ptr_CrossWorkgroup_uchar %p2\nOpFunctionCall ... %p1 ...\n```\n\nSkip assigning pointee type for inttoptr when the destination is\nuntyped, fallback later recovers the correct single pointer type.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c9b66ccfbdbd1267dd6f96777233bb742627f4da",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp",
      "new_id": "b6e71c7b76348937bfd18e9026b007841f0b1584",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ded7d19a4dc50f2220b0f737e9a2941cb5da260a",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_cache_controls/inttoptr-no-double-pointer.ll"
    }
  ]
}
