)]}'
{
  "commit": "c03d0fe672b2506d22d101cb7704996f4ffda3e4",
  "tree": "e6c7b7486f1cf44ce6772997faa38d80bc6cd17c",
  "parents": [
    "20c15c7afe97a546d339a5500d3fa273412e2fda"
  ],
  "author": {
    "name": "Wenju He",
    "email": "wenju.he@intel.com",
    "time": "Mon Jan 26 08:13:22 2026 +0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Jan 26 08:13:22 2026 +0800"
  },
  "message": "[OpenCL] Add clang internal extension __cl_clang_function_scope_local_variables  (#176726)\n\nOpenCL spec restricts that variable in local address space can only be\ndeclared at kernel function scope.\nAdd a Clang internal extension __cl_clang_function_scope_local_variables\nto lift the restriction.\n\nTo expose static local allocations at kernel scope, targets can either\nforce-inline non-kernel functions that declare local memory or pass a\nkernel-allocated local buffer to those functions via an implicit argument.\n\nMotivation: support local memory allocation in libclc\u0027s implementation\nof work-group collective built-ins, see example at:\nhttps://github.com/intel/llvm/blob/41455e305117/libclc/libspirv/lib/amdgcn-amdhsa/group/collectives_helpers.ll\nhttps://github.com/intel/llvm/blob/41455e305117/libclc/libspirv/lib/amdgcn-amdhsa/group/collectives.cl#L182\n\nRight now this is a Clang-only OpenCL extension intended for compiling\nOpenCL libraries with Clang. It could be proposed as a standard OpenCL\nextension in the future.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dc0f838e874a003945891aa5faf7ef8addb6fccc",
      "old_mode": 33188,
      "old_path": "clang/docs/LanguageExtensions.rst",
      "new_id": "0adfaebf24581083b5b7f3ffa1f358afa747d372",
      "new_mode": 33188,
      "new_path": "clang/docs/LanguageExtensions.rst"
    },
    {
      "type": "modify",
      "old_id": "d6c0b585d1809cc0748bbfe0248761f667f532df",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Basic/OpenCLExtensions.def",
      "new_id": "8113cdb44f367ead92f1372466b164c7aea74aba",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Basic/OpenCLExtensions.def"
    },
    {
      "type": "modify",
      "old_id": "066acc3424c8fe608b9f54957a16de19fd02fc15",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/SemaDecl.cpp",
      "new_id": "3b14abe993034ad5650fbeb4d94e3271d5f17459",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/SemaDecl.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7b61a32e95c96fb201a8713a0ad0022e93a7de35",
      "new_mode": 33188,
      "new_path": "clang/test/CodeGenOpenCL/local-scope.cl"
    },
    {
      "type": "modify",
      "old_id": "b24c1b4bb62729ecb6d8980ea88caf6627c664da",
      "old_mode": 33188,
      "old_path": "clang/test/SemaOpenCL/extension-version.cl",
      "new_id": "1dd3839a5c6033cfc6810442eb2638481f8ae41d",
      "new_mode": 33188,
      "new_path": "clang/test/SemaOpenCL/extension-version.cl"
    },
    {
      "type": "modify",
      "old_id": "4b9d6e9dd4f2ddddb289c7ee7f6f5042a8cd307c",
      "old_mode": 33188,
      "old_path": "clang/test/SemaOpenCL/storageclass.cl",
      "new_id": "fc6518b2d42dfafe00f4d440a31482e748ff390f",
      "new_mode": 33188,
      "new_path": "clang/test/SemaOpenCL/storageclass.cl"
    }
  ]
}
