)]}'
{
  "commit": "b0d03ccc0855f2bff39160f25fcde06aae07cace",
  "tree": "e34aed05ae556e3aa666ed13ead4ed157a986f08",
  "parents": [
    "1d250d9099a9ba8b53add7eb7db6827e8fc0c8fd"
  ],
  "author": {
    "name": "Vyacheslav Levytskyy",
    "email": "vyacheslav.levytskyy@intel.com",
    "time": "Mon Mar 25 10:14:46 2024 +0100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Mar 25 10:14:46 2024 +0100"
  },
  "message": "[SPIR-V] Fix illegal OpConstantComposite instruction with non-const constituents in SPIR-V Backend (#86352)\n\nThis PR fixes illegal use of OpConstantComposite with non-constant\r\nconstituents. The test attached to the PR is able now to satisfy\r\n`spirv-val` check. Before the fix SPIR-V Backend produced for the\r\nattached test case a pattern like\r\n```\r\n%a \u003d OpVariable %_ptr_CrossWorkgroup_uint CrossWorkgroup %uint_123\r\n%11 \u003d OpConstantComposite %_struct_6 %a %a\r\n```\r\nso that `spirv-val` complained with\r\n```\r\nerror: line 25: OpConstantComposite Constituent \u003cid\u003e \u002710[%a]\u0027 is not a constant or undef.\r\n  %11 \u003d OpConstantComposite %_struct_6 %a %a\r\n```",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d82fb2df4539a353b706d736592af19e14a46506",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/SPIRV/SPIRVDuplicatesTracker.cpp",
      "new_id": "7c32bb1968ef5803717f40ac66967533361494a7",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/SPIRV/SPIRVDuplicatesTracker.cpp"
    },
    {
      "type": "modify",
      "old_id": "96cc621791e972dddea8db1ba38d82ac3b785591",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/SPIRV/SPIRVDuplicatesTracker.h",
      "new_id": "2ec3fb35ca0451f13bccfeaad3070944a235bbee",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/SPIRV/SPIRVDuplicatesTracker.h"
    },
    {
      "type": "modify",
      "old_id": "ee52163a5d127f66eca6b625f6ec9d17dae2cf87",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp",
      "new_id": "db66ed4f0e0f1979a845054792f226028c68f376",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp"
    },
    {
      "type": "modify",
      "old_id": "da480b22a525f212d78886399b2d90fbb89df606",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.h",
      "new_id": "ed0f90ff89ce6e7b3d2e98e3447ff4d50981f6ab",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.h"
    },
    {
      "type": "modify",
      "old_id": "39228e2196b3afec06539e7f5fe7fb339ce5d528",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp",
      "new_id": "505b19a4d66edb9e9d02d53680ffb2e35ccbced6",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp"
    },
    {
      "type": "modify",
      "old_id": "d547f91ba4a565f982859203c5ca784e6807ff1e",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/SPIRV/SPIRVPreLegalizer.cpp",
      "new_id": "1f0d8d8cd43a8f91d71b4530850cfb39da56236a",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/SPIRV/SPIRVPreLegalizer.cpp"
    },
    {
      "type": "modify",
      "old_id": "8dbbd9049844c825cd0f15abd52629adfbe1c72f",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/SPIRV/SPIRVSymbolicOperands.td",
      "new_id": "ff102e318469f4e5cb1b52e1e90330e6980dce4f",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/SPIRV/SPIRVSymbolicOperands.td"
    },
    {
      "type": "modify",
      "old_id": "d426fc4dfd4eec499eee46044275bc7d50e7cd2d",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/SPIRV/pointers/struct-opaque-pointers.ll",
      "new_id": "ce3ab8895a5948810f91ed4b306ab29f542e1105",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/SPIRV/pointers/struct-opaque-pointers.ll"
    }
  ]
}
