)]}'
{
  "log": [
    {
      "commit": "a6bef5dde70e32c9ae090e9f0944a16cf0da3da5",
      "tree": "2f19c95a7146239fd9ad418f9d1917cecda16cd1",
      "parents": [
        "8d5ad5b75d37bf9da5a55817cac6db06a7e091a9"
      ],
      "author": {
        "name": "Julian Brown",
        "email": "julian.brown@amd.com",
        "time": "Thu Oct 29 18:13:14 2026 +0000"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 29 11:29:26 2026 -0700"
      },
      "message": "[OpenMP] Mostly remove experimental taskgraph support from runtime (#194046)\n\nBecause the changes to runtime support for taskgraph record/replay\nare quite extensive, they will likely be more comprehensible if the\nexisting parts are removed before the new parts are added.  This is the\nremoval part.\n\nGitOrigin-RevId: c1d907e151c91ddd1f2391d63d05ca430592bb61\n"
    },
    {
      "commit": "8d5ad5b75d37bf9da5a55817cac6db06a7e091a9",
      "tree": "734208cb4744185d81d260b5017262a81c3a7f53",
      "parents": [
        "3163fd135ccc79705a9ee7b4d0064a76712c64bf"
      ],
      "author": {
        "name": "Hori Godai",
        "email": "ess_president@me.com",
        "time": "Thu Oct 29 19:29:06 2026 +0900"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 29 03:33:24 2026 -0700"
      },
      "message": "[openmp] Disable affinity on WebAssembly Linux targets (#235840)\n\n`KMP_AFFINITY_SUPPORTED` is turned off for WASI and Emscripten, but not\nfor clang\u0027s WebAssembly Linux target (`wasm32-unknown-linux-*`, WALI),\nwhich defines `__linux__`. libomp then enables affinity there and the\nbuild stops in `kmp_affinity.h`:\n\n```\nopenmp/runtime/src/kmp_affinity.h:326:2: error: Unknown or unsupported architecture\n```\n\nbecause there are no `sched_{set,get}affinity` syscall numbers for\nWebAssembly. WebAssembly has no way to pin a thread to a CPU on any of\nthese targets, so this change turns affinity off by architecture\n(`KMP_ARCH_WASM32` / `KMP_ARCH_WASM64`) instead of by OS. WASI and\nEmscripten are always WebAssembly, so nothing changes for them.\n\nTesting:\n- Built libomp for `wasm32-unknown-linux-musl` with upstream clang.\nBefore: the build fails with the error above. After: it builds.\n- Linked an OpenMP program with the resulting static `libomp.a` (a\n`parallel for` with a reduction and an `atomic` update, 4 threads) and\nran it on a WebAssembly Linux runtime. It gives the expected results.\n\nThis patch was prepared with the help of Claude Code (an AI tool), as\nnoted with `Assisted-by` in the commit message.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nGitOrigin-RevId: a490155f6c565b7cbab51e29f88ce369bd09c83d\n"
    },
    {
      "commit": "3163fd135ccc79705a9ee7b4d0064a76712c64bf",
      "tree": "e71fc77bac70054ec80cbccde1a6e83bff7f3d30",
      "parents": [
        "28acf49a1d9ecff3f6da546ab69d8269fc81fbf0"
      ],
      "author": {
        "name": "Robert Imschweiler",
        "email": "robert.imschweiler@amd.com",
        "time": "Tue Oct 27 09:24:40 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Oct 27 01:31:36 2026 -0700"
      },
      "message": "[OpenMP][offload] Trade threads for blocks in Generic-SPMD kernels (#234191)\n\nFor Generic-SPMD mode, the trip count refers to the outer distribute\nloop, the per-iteration cost is unknown. So, prefer more blocks and less\nthreads for this exec mode. This prevents large blocks with only few\nactive threads.\n\nThis is an upstream port of the corresponding downstream.\n\nClaude assisted with this patch.\n\nGitOrigin-RevId: 7e843af22cf0f1a836e57c13c96a7b2ea146680d\n"
    },
    {
      "commit": "28acf49a1d9ecff3f6da546ab69d8269fc81fbf0",
      "tree": "306d63fb261b1225769db3e8801cedb9604f5773",
      "parents": [
        "eb6424f810140ed97ddd2f72691ba47bfd7dacd9"
      ],
      "author": {
        "name": "Jan André Reuter",
        "email": "jan@zyten.de",
        "time": "Mon Oct 26 18:04:51 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Oct 26 10:12:18 2026 -0700"
      },
      "message": "[OpenMP] Fix build with `LIBOMP_OMPT_OPTIONAL\u003dOFF` (#235734)\n\nSince #95602, `__kmp_barrier_template` and `__kmp_join_barrier` compute\nthe barrier kind and wait state inside an `OMPT_OPTIONAL` block to\nprovide tools with specific information about the encountered kind of\nbarrier. However, both the kind and wait state are used in non-optional\nOpenMP builds as well. This breaks the build when OMPT support is\nenabled but optional OMPT support is disabled.\n\nTo fix this, move the computation out of the `OMPT_OPTIONAL` block, so\nit is guarded only by `OMPT_SUPPORT`. OpenMP 6.0 Section 33.31 requires\nan implementation to maintain an approximate thread state information\nfor each thread while the OMPT interface is active. As such, updating\nthe flag is not optional, unlike the `sync_region[_wait]` callbacks.\n\nFixes #234164\n\nSigned-off-by: Jan Andre Reuter \u003cjan@zyten.de\u003e\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nGitOrigin-RevId: 10e0aabfab95d63ca155fc938e5b310e31847939\n"
    },
    {
      "commit": "eb6424f810140ed97ddd2f72691ba47bfd7dacd9",
      "tree": "12a16090fae0983ea3c4f0fcd9b41aa596e545c7",
      "parents": [
        "377bddd5c1546a4826387cc65bb2ad56b39fd953"
      ],
      "author": {
        "name": "Kelvin Li",
        "email": "kli@ca.ibm.com",
        "time": "Thu Oct 22 10:05:13 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 07:12:53 2026 -0700"
      },
      "message": "[OMP] Disable issue-94260-2.c on AIX (#234478)\n\nThe test fails on AIX.\n\nRef: https://github.com/llvm/llvm-project/issues/176451\nGitOrigin-RevId: 1461f657b7982c21d6dfa339a21a688fbfbbe940\n"
    },
    {
      "commit": "377bddd5c1546a4826387cc65bb2ad56b39fd953",
      "tree": "b499e252a847d684b73a823f65803383b6a5acd3",
      "parents": [
        "db4bda9813f736a205f60ea66100d6a540c288bf"
      ],
      "author": {
        "name": "Amit Tiwari",
        "email": "Amit.Tiwari@amd.com",
        "time": "Thu Oct 22 13:57:42 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 01:35:27 2026 -0700"
      },
      "message": "[Clang][OpenMP] Adds flatten float tripcounts with avoiding `Sema` range checks for float under an int cast (#233521)\n\nRe-lands #229458 and adds the Sema fix that caused its revert (#233657).\n\n`flatten` with a float bound builds an int trip count. That path hit an\nassert in `GetValueRange` when a later check looked through an implicit\nfloat-\u003eint cast.\n\nOne PR, because:\n- the Sema-only follow-up needs the float-\u003eint flatten change for its\ntest to pass after the revert.\n- #229458 alone would hit the same assert again.\n\nChanges in-short:\n- re-landing change\n- `GetValueRange` skips non-integer values\n\nGitOrigin-RevId: 0f38414f65cbc04ef25740bcb5cedf75c2fb860e\n"
    },
    {
      "commit": "db4bda9813f736a205f60ea66100d6a540c288bf",
      "tree": "04ef6a39f39c79eaf38a850b06d2801ecdf0bda0",
      "parents": [
        "62ebd40f1fc562103e386a3e06b9d1476a552929"
      ],
      "author": {
        "name": "Robert Imschweiler",
        "email": "robert.imschweiler@amd.com",
        "time": "Tue Oct 20 14:38:56 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Oct 20 05:43:10 2026 -0700"
      },
      "message": "[OpenMP][offload] Fix wave32 handling of xteam reductions (#233096)\n\nCo-authored-by: Joseph Huber \u003chuberjn@outlook.com\u003e\nGitOrigin-RevId: c65e379b48203909d5f7be1ef915f92df0ce875d\n"
    },
    {
      "commit": "62ebd40f1fc562103e386a3e06b9d1476a552929",
      "tree": "e1b39d0340cbc49cad5072517bc4b4a656ebbd06",
      "parents": [
        "fcac7410685faa3d6cf2fa3ee2627e29f56a3c93"
      ],
      "author": {
        "name": "Hubert Tong",
        "email": "hubert.reinterpretcast@gmail.com",
        "time": "Mon Oct 19 22:43:48 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Oct 19 19:48:25 2026 -0700"
      },
      "message": "Revert \"[Clang][OpenMP] Convert `flatten` floating-point trip-count to integers \" (#233657)\n\nReverts llvm/llvm-project#229458\n\nRevert-to-green; failure:\nhttps://lab.llvm.org/buildbot/#/builders/231/builds/1969/steps/11/logs/FAIL__libomp__floating-bounds_c\nhttps://github.com/llvm/llvm-project/pull/233521 appears to be blocked\non review.\n\nGitOrigin-RevId: e9a7fbfb8ba0ecbe3ea58ccf3cad90226050f056\n"
    },
    {
      "commit": "fcac7410685faa3d6cf2fa3ee2627e29f56a3c93",
      "tree": "b89369e9307ccd8e0bf5763eece3f5090cd2f21f",
      "parents": [
        "1773daba8c13c566396afa8546e3b173c8ac6c71"
      ],
      "author": {
        "name": "Amit Tiwari",
        "email": "Amit.Tiwari@amd.com",
        "time": "Mon Oct 19 22:24:15 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Oct 19 10:00:59 2026 -0700"
      },
      "message": "[Clang][OpenMP] Convert `flatten` floating-point trip-count to integers  (#229458)\n\nFixes #225753\n\nSolution: The compiler now turns that trip count into an integer before\nit builds the flattened loop. The width follows the existing rule. If\nthe loop variable is an integer, the new count keeps that variable\u0027s\nsignedness, so a `long` loop with a `double` count stays signed.\n\nIf the conversion fails, `flatten` returns an error instead of aborting.\n\nGitOrigin-RevId: 5db657b9d7afdf469398f562288aba6aa2fb68e4\n"
    },
    {
      "commit": "1773daba8c13c566396afa8546e3b173c8ac6c71",
      "tree": "e1b39d0340cbc49cad5072517bc4b4a656ebbd06",
      "parents": [
        "a1cc4699b3c47391172ae624a18f7f9c1ace6e56"
      ],
      "author": {
        "name": "Abid Qadeer",
        "email": "haqadeer@amd.com",
        "time": "Mon Oct 19 11:54:19 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Oct 19 04:00:56 2026 -0700"
      },
      "message": "[OpenMP][lit] Disable flaky tasking/issue-94260-2.c on s390x too (#233384)\n\nb217e5c5a035 marked this test UNSUPPORTED on x86 Linux because it fails\nsporadically; the underlying problem is tracked in #176451, which is\nstill open. The arch qualifier keeps it enabled everywhere else, so the\ns390x bot still runs it and hits the same failure. In the last 100\nbuilds of openmp-s390x-linux (28089-28188), it was the only failing test\nin each of the 4 failed builds:\n\n  https://lab.llvm.org/buildbot/#/builders/88/builds/28117\n  https://lab.llvm.org/buildbot/#/builders/88/builds/28151\n  https://lab.llvm.org/buildbot/#/builders/88/builds/28186\n  https://lab.llvm.org/buildbot/#/builders/88/builds/28188\n\nIn 28188 it crashed with SIGSEGV and no output, and the only change in\nthe blamelist was a documentation fix (#232296). Add s390x to the arch\nlist so the bot stops blaming unrelated commits while #176451 is open.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\nGitOrigin-RevId: a1787b5db15a776220e64860f9dbe1c6cb253e69\n"
    },
    {
      "commit": "a1cc4699b3c47391172ae624a18f7f9c1ace6e56",
      "tree": "4802ce605872c284b4115120d3458ac1ab5f9587",
      "parents": [
        "4bf5b605ea48acd613143b4ab420d54e1ae08444"
      ],
      "author": {
        "name": "Robert Imschweiler",
        "email": "robert.imschweiler@amd.com",
        "time": "Wed Oct 14 15:12:48 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 14 06:18:09 2026 -0700"
      },
      "message": "[OpenMP][offload] Fix single-thread SPMD cross-team reductions (#231843)\n\nIf a kernel gets SPMDized by OpenMPOpt but does not have a parallel\nregion, it actually is only executed by a single thread.\nforceSingleThreadPerWorkgroupHelper() is responsible for that and had\nbeen introduced by https://reviews.llvm.org/D133120. The cross-team\nreduction trusted that SPMD mode means that we can re-use the threads of\nthe parallel region. Now, OpenMPOpt explicitly limits affected kernels\nto a single thread per team via the kernel environment, so that we\nactually know how many threads we have available. This also changes\nomp_get_thread_limit().\n\nClaude assisted with this patch.\n\nGitOrigin-RevId: 2c1650555b1005a6bbe7cf3cb0648bea0fa7416d\n"
    },
    {
      "commit": "4bf5b605ea48acd613143b4ab420d54e1ae08444",
      "tree": "220eac4f4a7eb7da20e7c1bd0df9f5b9b84a0668",
      "parents": [
        "46ceb6b9e44fd6c6918445b9d419b8d5bdab63ff"
      ],
      "author": {
        "name": "Joseph Huber",
        "email": "huberjn@outlook.com",
        "time": "Fri Oct 09 12:32:58 2026 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 09 10:40:02 2026 -0700"
      },
      "message": "[OpenMP] Do not reinstall ompd modules in multilibs (#230261)\n\nSummary:\nMulitlibs build the same library with different options, usually placed\ninto another directory. These libraries do not follow that scheme but\nhave no real utilitiy in a multilib so just exclude them.\nGitOrigin-RevId: a270dc760137d65ffcb0b312b25769f2b201896f\n"
    },
    {
      "commit": "46ceb6b9e44fd6c6918445b9d419b8d5bdab63ff",
      "tree": "bf6834d4a76582b0c4fd8aa219b752276ad2fb13",
      "parents": [
        "22cfff829f9c2d0e823ff5a06de3da86d11057b5"
      ],
      "author": {
        "name": "Reid Kleckner",
        "email": "rkleckner@nvidia.com",
        "time": "Thu Oct 08 16:12:51 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 08 16:19:35 2026 -0700"
      },
      "message": "[docs] Repair remaining absolute self-documentation links (#228625)\n\nReplace same-project absolute URLs with relative source links or Sphinx\ncross-references in LLVM, Flang, libc, clang-tools-extra, and OpenMP.\nUse the explicit LangRef label for atomic.ignore.denormal.mode metadata.\nThis lets Sphinx validate the targets and keeps local and archived\ndocumentation self-contained.\n\nValidated by building all docs-*-html targets for these subprojects with\nthe pending Sphinx build warning merged in.\n\nPart of #214861\n\nAssisted-by: Codex\nGitOrigin-RevId: a3621f43de510a366e6cab4877629f2a5af6fe42\n"
    },
    {
      "commit": "22cfff829f9c2d0e823ff5a06de3da86d11057b5",
      "tree": "f0ee2db18b2a04c4c3a2e8be840c542f61e3649d",
      "parents": [
        "2fcb9789fcca9d0b2586719305f79dfb8e281d99"
      ],
      "author": {
        "name": "Caroline Newcombe",
        "email": "caroline.newcombe@hpe.com",
        "time": "Thu Oct 08 08:31:30 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 08 05:41:05 2026 -0700"
      },
      "message": "[OpenMP][DeviceRTL] Report the source location in __kmpc_error diagnostics (#224298)\n\nFollow-up to #220702. Completes #204240.\n\nThe device runtime accepted the `ident_t` argument but ignored it, so\n`error at(execution)` in a `target` region printed no source location.\nThis reports it, replicating the host runtime:\n```\nOMP: error_directive.f90:14:3: Encountered user-directed warning: warning message.\n```\n\nWhen the ident carries no location the result is `unknown:0:0`, same as\nthe host. flang populates the ident only with `-g`; clang always does.\n\nAssisted-by: Copilot\nGitOrigin-RevId: fa6cf7a2af418d256410d37c1fef32f8b10ba923\n"
    },
    {
      "commit": "2fcb9789fcca9d0b2586719305f79dfb8e281d99",
      "tree": "dccc8ba7fbe4d079bde04b39bf0f086b4a88d8a4",
      "parents": [
        "46fbc9a3daca182a3f23fb71b38a81b435de9ba7"
      ],
      "author": {
        "name": "Joseph Huber",
        "email": "huberjn@outlook.com",
        "time": "Wed Oct 07 12:02:53 2026 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 07 10:08:27 2026 -0700"
      },
      "message": "[OpenMP][ompd] Fix missing install components (#229830)\n\nSummary:\nUnintuitively, each component only applies to the destination just above\nit. This combined form needs a component for each line, so add them.\nGitOrigin-RevId: b591a4b9997637c4e9947042fb33c85cc62e4c2e\n"
    },
    {
      "commit": "46fbc9a3daca182a3f23fb71b38a81b435de9ba7",
      "tree": "b6df34ea5af9214ed14b86d22a597ec973b95b9f",
      "parents": [
        "420f8327656d52e0940f5ef30e79b82e62b1c571"
      ],
      "author": {
        "name": "Amit Tiwari",
        "email": "Amit.Tiwari@amd.com",
        "time": "Wed Oct 07 18:00:40 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 07 05:37:19 2026 -0700"
      },
      "message": "[Clang][OpenMP] Mixed signed/unsigned trip counts fix (#226462)\n\nBuild that 1 already in the loop-index type (same pattern as the\nexisting 0).\n\nFixes #225756\n\nGitOrigin-RevId: 63a614cadacc204e353e6c7d2c60f8fa38a4cb62\n"
    },
    {
      "commit": "420f8327656d52e0940f5ef30e79b82e62b1c571",
      "tree": "0fee739c9d6037156bae1d303c9db96417c32d7f",
      "parents": [
        "fbd238800ccc9863b5372e5f06afc94475fea833"
      ],
      "author": {
        "name": "Zahira Ammarguellat",
        "email": "zahira.ammarguellat@intel.com",
        "time": "Wed Oct 07 05:02:17 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 07 05:07:31 2026 -0700"
      },
      "message": "[OpenMP] Tile/stripe followed by reverse (#222401)\n\n`Clang` rejects `#pragma omp tile` or `#pragma omp stripe` immediately\nfollowed by `#pragma omp reverse` on the same loop nest, emitting the\nerror:\n`error: statement after \u0027#pragma omp tile\u0027 must be a for loop`\nSee https://godbolt.org/z/d1fsfaMe9\n\nThe correct behavior is to accept it. Bare`reverse`, bare\n`tile`/`stripe`, and `tile` followed by `stripe` all work. Only\n`tile`/`stripe` and `reverse` fails.\nThis PR fixes the issue.\n\nGitOrigin-RevId: 05559260278ec9d911ab9396f3258a313d229cbd\n"
    },
    {
      "commit": "fbd238800ccc9863b5372e5f06afc94475fea833",
      "tree": "963c05e71125018c38b404dcd5b913a1eb51ff94",
      "parents": [
        "d38a586fbd06a3a45ae4d48c89f33808dfa9b839"
      ],
      "author": {
        "name": "Samuel Newcome",
        "email": "97889602+SamNewcome@users.noreply.github.com",
        "time": "Fri Oct 02 12:23:29 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 02 03:26:39 2026 -0700"
      },
      "message": "[OpenMP] Corrects the setting of the Static_Steal schedule with `omp_set_schedule` (#227236)\n\nStatic-steal is considered a valid OMP scheduler by `kmp_runtime.cpp`\u0027s\n`__kmp_set_schedule` function. But when trying pass it to the setter, we\nend up with a failure because it was not added to the `__kmp_sch_map` in\n`kmp_global.cpp`.\n\nThis PR adds a test that each schedule in `kmp.h` can be set and gotten\nby `omp_set_schedule` and `omp_get_schedule`, which fails with static\nsteal and a fix for `__kmp_sch_map`. To deal with static-steal set this\nway with `ordered` loops, I added similar handling as with setting\nstatic steal as an environment variable: gets converted to dynamic,\nnonmonotonic when initialising the loop, so when combined with `ordered`\nsimply dynamic scheduling is used. A test that static-steal with\n`ordered` works was added, which used to hang before adding this\nhandling.\n\nThis PR was made with AI assitance. All code was reviewed and where\nnecessary modified by myself.\n\nGitOrigin-RevId: 1f48c2f8f4021f016a62fe0cebf877c4c8f5dffd\n"
    },
    {
      "commit": "d38a586fbd06a3a45ae4d48c89f33808dfa9b839",
      "tree": "07d7cf00135f646f20988f3d80885c3d304eb335",
      "parents": [
        "405724b8b7024402642d44131f1217982a9a1086"
      ],
      "author": {
        "name": "Carlos Seo",
        "email": "carlos.seo@linaro.org",
        "time": "Thu Oct 01 19:38:13 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 01 19:43:01 2026 -0700"
      },
      "message": "[OpenMP] Initialize td_last_tied when an untied task starts (#214320)\n\nGitOrigin-RevId: 7d6ff5b4e4419d505167416ba6ef199c6e35d4fb\n"
    },
    {
      "commit": "405724b8b7024402642d44131f1217982a9a1086",
      "tree": "7a0aff9a521035eae557ac3e7552f2ec332f5d4a",
      "parents": [
        "5cf93ff89ea5d8b247dd02dd37fd8859014f0c71"
      ],
      "author": {
        "name": "Hansang Bae",
        "email": "hansang.bae@intel.com",
        "time": "Thu Oct 01 17:48:53 2026 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 01 15:54:41 2026 -0700"
      },
      "message": "[OpenMP][libomp] Cleanup OpenMP specification version information (#225427)\n\nMake OpenMP specification version and date aligned with what is defined\nin the CMake configuration.\n\nGitOrigin-RevId: 1524cec90a78ad6da741458ee6fdea4721894398\n"
    },
    {
      "commit": "5cf93ff89ea5d8b247dd02dd37fd8859014f0c71",
      "tree": "cf66cf02898187df8d3ca2e64f72715b9bb931de",
      "parents": [
        "0e30ae1a2fd31e3d90408a977a776c17f466532a"
      ],
      "author": {
        "name": "arsnyder16",
        "email": "asnyder@minitab.com",
        "time": "Tue Sep 29 12:09:11 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 29 09:13:35 2026 -0700"
      },
      "message": "[OpenMP] Support up to 32 arguments in the generic microtask dispatcher (#211071)\n\nExtend the generic `__kmp_invoke_microtask` implementation to support up\nto 32 microtask arguments.\n\nThe generic dispatcher currently handles at most 15 arguments. OpenMP\nregions with more captured variables terminate at runtime.\n\nThis affects WebAssembly because call_indirect requires the callee type\nto exactly match the call-site type. Unlike assembly dispatchers on\nplatforms such as x86_64, the generic C++ implementation cannot\nconstruct an arbitrary-arity call dynamically and must provide each\nsupported signature explicitly.\nReal-world OpenMP regions can exceed the existing limit; the motivating\ncases require between 16 and 21 arguments.\n\nA longer-term alternative would be to change the compiler/runtime\nconvention for generic-dispatch targets so captured-variable pointers\nare passed through a single packed context argument. That would remove\nthe fixed upper bound, but it would require coordinated Clang and OpenMP\nruntime changes and consideration of compatibility with objects produced\nusing the existing variadic microtask ABI. This change keeps the\nexisting ABI and provides a focused runtime-only fix.\n\nGitOrigin-RevId: 9076414489edb1db74ec6f7bc22a715d1cd66f0c\n"
    },
    {
      "commit": "0e30ae1a2fd31e3d90408a977a776c17f466532a",
      "tree": "b91f226fb94f9b1f78684cf28503fe7cfa625c0a",
      "parents": [
        "e3612dd059b206b127bfb2df59109c50756fe7ae"
      ],
      "author": {
        "name": "Joseph Huber",
        "email": "huberjn@outlook.com",
        "time": "Tue Sep 29 07:50:42 2026 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 29 06:00:03 2026 -0700"
      },
      "message": "[OpenMP] Install the Fortran module files with libomp-mod (#227116)\n\nSummary:\nThe `libomp-mod` install component only contains `omp_lib.h`. The module\nfiles are only installed incidentally as part of the Fortran runtime or\ndirectory copy. Just do this directly. These were intentinoally dropped\nin https://github.com/llvm/llvm-project/pull/171515, in favor of the\ndirectory copy. However, this means these are ignored when done through\nthe specific component target.\n\nShouldn\u0027t affect plain installs.\n\nGitOrigin-RevId: c7b2f3191aab2d563d9146d828a195df6103292f\n"
    },
    {
      "commit": "e3612dd059b206b127bfb2df59109c50756fe7ae",
      "tree": "8e7d7bae835e0dc33ccd9bfb13e4e656d179ca57",
      "parents": [
        "eb3a5d94b2fd99b2ee412ca847492f273e52a91e"
      ],
      "author": {
        "name": "Jason Van Beusekom",
        "email": "jason.van-beusekom@hpe.com",
        "time": "Fri Sep 25 17:09:30 2026 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Sep 25 15:14:06 2026 -0700"
      },
      "message": "[Offload][OpenMP] remove SourceInfo::removePath (#226586)\n\nThis Pr is the same as https://github.com/llvm/llvm-project/pull/226283\n(which was reverted in https://github.com/llvm/llvm-project/pull/226557)\nThis Pr is the same as https://github.com/llvm/llvm-project/pull/226283\nbut with an update to info.c to account for the new full path output.\n\nGitOrigin-RevId: 91d0e2e91e2dc4c4729cbe911f67388453ee509d\n"
    },
    {
      "commit": "eb3a5d94b2fd99b2ee412ca847492f273e52a91e",
      "tree": "5dc5233ab8f905ddd160671315b6c990682f3ab0",
      "parents": [
        "0bab903e24e1d6d8e07997ab29638774ff7a90ec"
      ],
      "author": {
        "name": "Jason Van Beusekom",
        "email": "jason.van-beusekom@hpe.com",
        "time": "Fri Sep 25 13:20:11 2026 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Sep 25 11:27:12 2026 -0700"
      },
      "message": "Revert \"[Offload][OpenMP] remove SourceInfo::removePath (#226283)\" (#226557)\n\nThis reverts commit 5b8e65685b4fe99191a217bfa0527c51cf36925c.\n\nIn https://github.com/llvm/llvm-project/pull/226283 I forgot to update\ninfo.c to account for the full file paths in its output, will update\ncommit with fixed test and re open PR\n\nGitOrigin-RevId: 68d354f5795682ea1fe03304ac3e7b2a43a36b0d\n"
    },
    {
      "commit": "0bab903e24e1d6d8e07997ab29638774ff7a90ec",
      "tree": "8e7d7bae835e0dc33ccd9bfb13e4e656d179ca57",
      "parents": [
        "14c78f6e2ef842c036e60815dc6f52b903969674"
      ],
      "author": {
        "name": "Jason Van Beusekom",
        "email": "jason.van-beusekom@hpe.com",
        "time": "Fri Sep 25 10:38:54 2026 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Sep 25 08:41:49 2026 -0700"
      },
      "message": "[Offload][OpenMP] remove SourceInfo::removePath (#226283)\n\nFollowing discussion on\nhttps://discourse.llvm.org/t/rfc-add-opt-in-option-for-full-source-paths-in-offload-info-output/91901\nthis commit removes SourceInfo::removePath which changes\nLIBOMPTARGET_INFO to provide a non truncated source path:\n\n``` c\n#include \u003cstdio.h\u003e\n\n#define N 4\n\nint main(void) {\n  int a[N];\n  for (int i \u003d 0; i \u003c N; ++i)\n    a[i] \u003d 0;\n#pragma omp target map(tofrom : a[0 : N])\n  {\n    a[0] \u003d 1;\n  }\n  printf(\"%d\\n\", a[0]); /* expect 1 */\n  return 0;\n}\n```\n\n``` bash\nclang -fopenmp -fopenmp-targets\u003damdgcn-amd-amdhsa -g ./test/test.c\n\n# new\nLIBOMPTARGET_INFO\u003d-1 ./a.out\nomptarget device 0 info: Entering OpenMP kernel at ./test/test.c:9:1 with 1 arguments:\n\n# old\nLIBOMPTARGET_INFO\u003d-1 ./a.out\nomptarget device 0 info: Entering OpenMP kernel at test.c:9:1 with 1 arguments:\n```\nGitOrigin-RevId: 5b8e65685b4fe99191a217bfa0527c51cf36925c\n"
    },
    {
      "commit": "14c78f6e2ef842c036e60815dc6f52b903969674",
      "tree": "5dc5233ab8f905ddd160671315b6c990682f3ab0",
      "parents": [
        "9da99ea0b831574fd196a339103ce47e44d3f474"
      ],
      "author": {
        "name": "Thomas Köppe",
        "email": "tkoeppe@google.com",
        "time": "Thu Sep 24 22:58:31 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 24 15:01:51 2026 -0700"
      },
      "message": "[Clang][OpenMP] Reapply \"Memory leaks in OpenMP when affinity is disabled\" (#226292) (#226294)\n\nThe previous version was applying a compiler flag to the smoke test\nthat would result in an unrunnable binary on non-ARM platforms. The\nintention is for ASAN on ARM to run, and we get that by just not\nspecifying any flags and relying on the test system to include this\nplatform.\n\nGitOrigin-RevId: 92289bdbced90ccc9f63da0c7fdaa71879c70964\n"
    },
    {
      "commit": "9da99ea0b831574fd196a339103ce47e44d3f474",
      "tree": "033950545d9a8b792c43533db536da24eb0ece3e",
      "parents": [
        "80108660bb10052b02ca73ada41ecb4093be6e12"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Thu Sep 24 13:15:31 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 24 13:17:40 2026 -0700"
      },
      "message": "Revert \"[clang] [OpenMP] Memory leaks in OpenMP when affinity is disabled\" (#226292)\n\nReverts llvm/llvm-project#225441\n\nGitOrigin-RevId: fb6bc7fd73b3881b50453a5ffb52e5c00ae590f1\n"
    },
    {
      "commit": "80108660bb10052b02ca73ada41ecb4093be6e12",
      "tree": "3d683b2c78cb088b271e57c5a4a4715cfadaaadf",
      "parents": [
        "21110a383dd79f51d106bcdfdd506653e7d0cc4f"
      ],
      "author": {
        "name": "Thomas Köppe",
        "email": "tkoeppe@google.com",
        "time": "Thu Sep 24 21:01:52 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 24 13:08:21 2026 -0700"
      },
      "message": "[clang] [OpenMP] Memory leaks in OpenMP when affinity is disabled (#225441)\n\nWhen running with `KMP_AFFINITY\u003ddisabled`, there are two places in the\nOpenMP codebase that currently leak memory.\n\nFound by the ASAN leak sanitizer.\n\nGitOrigin-RevId: b0dac3939e1fee6db11876257f2870fd5a26585a\n"
    },
    {
      "commit": "21110a383dd79f51d106bcdfdd506653e7d0cc4f",
      "tree": "033950545d9a8b792c43533db536da24eb0ece3e",
      "parents": [
        "288a3d84b67ec2a3c3461caa68617e74a32aa45a"
      ],
      "author": {
        "name": "Amit Tiwari",
        "email": "Amit.Tiwari@amd.com",
        "time": "Thu Sep 24 13:36:47 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 24 01:11:32 2026 -0700"
      },
      "message": "[OpenMP][OMPD] Set plugin RUNPATH to identify LLVM Libs (#223691)\n\n`ompdModule` links LLVMSupport, but GDB loads it from\n`share/gdb/python/ompd/ompdModule.so` while LLVM libs lives in\n`lib/LLVMSupport.so` or `lib/LLVM.so`. The dynamic linker (one that\nopens .so files) loosk at:\n1) paths inside .so (aka RUNPATH)\n2) `LD_LIBRARY_PATH`\n3) or system defaults paths\n\nAfter [previous\npatch](https://github.com/llvm/llvm-project/pull/222455), a normal\ninstall can fail with \"cannot open shared object file\" unless the user\nsets `LD_LIBRARY_PATH` by hand which is easy to forget after `ninja\ninstall`.\n\nFix: The approach is to make CMake write RUNPATH on `ompdModule.so`, so\nthe plugin follows its own directions and hence the linker (same\napproach LLDB uses for its Python module). This completes the LLVM link\nadded in the previous patch. It does not change how `libompd.so` is\nlocated (still `ompd_dll_locations`/`LD_LIBRARY_PATH`).\nGitOrigin-RevId: a0fe8bbd0143be1a15900faef391dc8b878f856f\n"
    },
    {
      "commit": "288a3d84b67ec2a3c3461caa68617e74a32aa45a",
      "tree": "88bb99b8f65caf05d60afc634ce4c69564320174",
      "parents": [
        "1152a659611026565c9a9caf35483fc0e5b6100c"
      ],
      "author": {
        "name": "Amit Tiwari",
        "email": "Amit.Tiwari@amd.com",
        "time": "Tue Sep 22 20:47:31 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 22 08:25:00 2026 -0700"
      },
      "message": "[Clang][OpenMP] Add `#pragma omp flatten` loop directive + `depth` clause (#206977)\n\nAdds the OpenMP 6.1:  `Flatten Construct` + `depth Clause`.\nReferred in Section 17.4 and Section 6.4.7 respectively in [Technical\nReport 15](https://www.openmp.org/wp-content/uploads/openmp-TR15.pdf)\n\nGitOrigin-RevId: fd016b7d24d3a2ddabef9e1ebfc702885e9bb7c1\n"
    },
    {
      "commit": "1152a659611026565c9a9caf35483fc0e5b6100c",
      "tree": "128eaed30b35e634dba69b201815efc547bbaf87",
      "parents": [
        "59b9991622aa97d55407e5b45971e5fe67b41faf"
      ],
      "author": {
        "name": "Amit Tiwari",
        "email": "Amit.Tiwari@amd.com",
        "time": "Tue Sep 22 10:38:48 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Sep 21 22:13:18 2026 -0700"
      },
      "message": "[libomp] OpenMP 6.0 Device-Scope Environment Variables  (#197191)\n\nThe patch introduces `_ALL` `_DEV` `_DEV_\u003cid\u003e` env var suffixes to the\nLLVM\u0027s OpenMP host runtime `libomp`. The eligible-list env var currently\nsupports `OMP_NUM_THREADS`.\n\nAssisted by Claude Opus 4.7 / Claude 4.6 Sonnet\n\nGitOrigin-RevId: 94f5dd0eb25ed97603af1d0a501c412fcfea6696\n"
    },
    {
      "commit": "59b9991622aa97d55407e5b45971e5fe67b41faf",
      "tree": "115991057dfd84e4c7f9c364ebb8a706b139b7cb",
      "parents": [
        "002673ecbd3892b15f1828dea8afb4737ad18569"
      ],
      "author": {
        "name": "Caroline Newcombe",
        "email": "caroline.newcombe@hpe.com",
        "time": "Thu Sep 17 08:40:28 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 17 05:51:50 2026 -0700"
      },
      "message": "[OpenMP][DeviceRTL] Implement __kmpc_error for the error directive (#220702)\n\n### Description\n[OpenMP][DeviceRTL] Implement __kmpc_error for the error directive\n\n### Notes\nPart of #204240\nAssisted-by: Github Copilot\nGitOrigin-RevId: bc79eb547e6ef6a9bceef4968df0e0a150b96a8d\n"
    },
    {
      "commit": "002673ecbd3892b15f1828dea8afb4737ad18569",
      "tree": "278cace955863a9bf9bb03dc54ea857e1ca18c2e",
      "parents": [
        "a7cf8e11718f1b27460ba0190f58f9e1366aab33"
      ],
      "author": {
        "name": "Tulio Magno Quites Machado Filho",
        "email": "tuliom@redhat.com",
        "time": "Wed Sep 16 08:02:02 2026 -0300"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 16 04:05:56 2026 -0700"
      },
      "message": "[OpenMP][OMPT] Fixes current_address printing on RV64GC (#223681)\n\nA previous commit increased the number of arguments passed to printf in\nprint_possible_return_addresses(addr) but forgot to change the format in\norder to include the new argument.\n\nFixes: 4e19543b1a85 (FIX some OMPT tests that fail on RISC-V (#156914),\n2026-07-24)\nGitOrigin-RevId: 0a8eb54dd990f8d9649f01aee1d2c0cbff3b68ac\n"
    },
    {
      "commit": "a7cf8e11718f1b27460ba0190f58f9e1366aab33",
      "tree": "6bf585fb2e3b80008f506879443acdfb0dae47bb",
      "parents": [
        "c2503cd8b8a6206b2325c501aaacfc2a0bc14234"
      ],
      "author": {
        "name": "Reid Kleckner",
        "email": "rkleckner@nvidia.com",
        "time": "Tue Sep 15 10:16:32 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 15 10:23:32 2026 -0700"
      },
      "message": "[OpenMP][docs] Finish MyST migration for OpenMP docs (#222194)\n\nThis was prepared with rst2myst plus LLM-assisted cleanup. The main\nmanual intervention was porting CommandLineArgumentReference.(rst|md) to\nthe semantic [`option`\ndirective](https://www.sphinx-doc.org/en/master/usage/domains/standard.html#directive-option),\nwhich causes some rendering differences.\n\nTracking issue: #201242\nSee the [migration guide] for more information.\n\n[migration guide]:\nhttps://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines\nThis is a stacked PR based on #222191, which is a standalone commit that\nrenames *.rst -\u003e *.md before this PR lands for history preservation\npurposes.\n\nPlease spot check my work and approve if it looks good. You can use the\nHTML links below to confirm it renders properly.\n\n-----\n\nBefore/after validation links:\n| Source file | Before HTML | After HTML |\n| --- | --- | --- |\n| `openmp/docs/CommandLineArgumentReference.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/CommandLineArgumentReference.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/CommandLineArgumentReference.html)\n|\n| `openmp/docs/ReleaseNotes.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/ReleaseNotes.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/ReleaseNotes.html)\n|\n| `openmp/docs/SupportAndFAQ.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/SupportAndFAQ.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/SupportAndFAQ.html)\n|\n| `openmp/docs/design/GPUGenericMode.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/design/GPUGenericMode.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/design/GPUGenericMode.html)\n|\n| `openmp/docs/design/GPUSPMDMode.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/design/GPUSPMDMode.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/design/GPUSPMDMode.html)\n|\n| `openmp/docs/design/Offloading.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/design/Offloading.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/design/Offloading.html)\n|\n| `openmp/docs/design/Overview.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/design/Overview.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/design/Overview.html)\n|\n| `openmp/docs/design/Runtimes.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/design/Runtimes.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/design/Runtimes.html)\n|\n| `openmp/docs/index.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/index.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/index.html)\n|\n| `openmp/docs/openacc/OpenMPExtensions.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/openacc/OpenMPExtensions.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/openacc/OpenMPExtensions.html)\n|\n| `openmp/docs/openacc/Overview.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/openacc/Overview.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/openacc/Overview.html)\n|\n| `openmp/docs/optimizations/OpenMPOpt.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/optimizations/OpenMPOpt.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/optimizations/OpenMPOpt.html)\n|\n| `openmp/docs/optimizations/OpenMPUnawareOptimizations.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/optimizations/OpenMPUnawareOptimizations.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/optimizations/OpenMPUnawareOptimizations.html)\n|\n| `openmp/docs/optimizations/Overview.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/optimizations/Overview.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/optimizations/Overview.html)\n|\n| `openmp/docs/remarks/OMP100.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP100.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP100.html)\n|\n| `openmp/docs/remarks/OMP101.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP101.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP101.html)\n|\n| `openmp/docs/remarks/OMP102.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP102.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP102.html)\n|\n| `openmp/docs/remarks/OMP110.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP110.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP110.html)\n|\n| `openmp/docs/remarks/OMP111.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP111.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP111.html)\n|\n| `openmp/docs/remarks/OMP112.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP112.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP112.html)\n|\n| `openmp/docs/remarks/OMP113.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP113.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP113.html)\n|\n| `openmp/docs/remarks/OMP120.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP120.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP120.html)\n|\n| `openmp/docs/remarks/OMP121.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP121.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP121.html)\n|\n| `openmp/docs/remarks/OMP130.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP130.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP130.html)\n|\n| `openmp/docs/remarks/OMP131.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP131.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP131.html)\n|\n| `openmp/docs/remarks/OMP132.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP132.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP132.html)\n|\n| `openmp/docs/remarks/OMP133.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP133.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP133.html)\n|\n| `openmp/docs/remarks/OMP140.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP140.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP140.html)\n|\n| `openmp/docs/remarks/OMP150.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP150.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP150.html)\n|\n| `openmp/docs/remarks/OMP160.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP160.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP160.html)\n|\n| `openmp/docs/remarks/OMP170.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP170.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP170.html)\n|\n| `openmp/docs/remarks/OMP180.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP180.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP180.html)\n|\n| `openmp/docs/remarks/OMP190.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OMP190.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OMP190.html)\n|\n| `openmp/docs/remarks/OptimizationRemarks.md` |\n[before](https://llvmdocs.staging.reidkleckner.dev/before/openmp/docs/remarks/OptimizationRemarks.html)\n|\n[after](https://llvmdocs.staging.reidkleckner.dev/after/openmp/docs/remarks/OptimizationRemarks.html)\n|\n\n---------\n\nCo-authored-by: Michael Kruse \u003cllvm-project@meinersbur.de\u003e\nGitOrigin-RevId: d0e55509a1cdfec0802d8b9e254ca2456a04175c\n"
    },
    {
      "commit": "c2503cd8b8a6206b2325c501aaacfc2a0bc14234",
      "tree": "4b4ff0b92cc99e2cc1c60a1786e630e12f37b063",
      "parents": [
        "e03daded3fc3e9a7ed7967ae84ad9eebda32fc4e"
      ],
      "author": {
        "name": "Reid Kleckner",
        "email": "rkleckner@nvidia.com",
        "time": "Tue Sep 15 10:16:30 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 15 10:23:05 2026 -0700"
      },
      "message": "[OpenMP][docs] Rename reStructuredText files to Markdown (#222191)\n\nTracking issue: #201242\nSee the [migration guide] for more information.\n\n[migration guide]:\nhttps://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines\n\nThis is the initial straight rename commit. It will probably break the\ndocs build, but it has to be a separate PR for blame preservation\npurposes.\n\nValidation:\n\n- Confirmed this commit contains exactly 34 `.rst` to `.md` renames and\nno content changes.\n- The complete stacked migration is validated in the follow-up PR.\n\nGitOrigin-RevId: 73b9d5341de05b0b433c1c133104ab1b74ab6e13\n"
    },
    {
      "commit": "e03daded3fc3e9a7ed7967ae84ad9eebda32fc4e",
      "tree": "6e3f8e168d175b986b8991b7754b5e336a4c34ca",
      "parents": [
        "824f5ab5e4c08498b9d1e8095ed5a982ba7e5fe4"
      ],
      "author": {
        "name": "Amit Tiwari",
        "email": "Amit.Tiwari@amd.com",
        "time": "Mon Sep 14 21:48:00 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Sep 14 09:24:13 2026 -0700"
      },
      "message": "[OpenMP][OMPD] Load `libompd` with LLVM dynamic lib (#222455)\n\nOMPD loads `libompd.so` through a small helper, but that helper still\nuses `dlopen/dlsym` under the hood. We have already laid the foundation\nby making libraries load behind helpers in the current state; this one\nis simply a cleanup that moves helpers to LLVM\u0027s loader, which is LLVM\u0027s\nstandard.\n\nThe current state has few issues:\n\n1: Still tied to Unix-style APIs.\n⁠2: Windows support has to separately deal with loader differences.\n3: Future shared-lib work would need more loader changes later.\n\nThis patch keeps the same OMPD API and call sites, but replaces the\nimplementation with LLVM\u0027s DynamicLibrary. Error handling remains\nunchanged.\n\nGitOrigin-RevId: 8eec838ca247c411c30b3452bc403b42e6d521e2\n"
    },
    {
      "commit": "824f5ab5e4c08498b9d1e8095ed5a982ba7e5fe4",
      "tree": "d6932aba346898c20021bea496f97c847e949edc",
      "parents": [
        "8c8cd2d831f3b9f86c32703e3d835d352a713ddb"
      ],
      "author": {
        "name": "shivaramaarao",
        "email": "58245296+shivaramaarao@users.noreply.github.com",
        "time": "Sat Sep 12 10:15:49 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Sep 11 21:52:01 2026 -0700"
      },
      "message": "[OpenMP] [Flang] Add Fortran integer(kind\u003d8) overloads for omp_lib APIs (#221451)\n\nFortran code that uses integer(8) arguments, including\n-fdefault-integer-8, did not match omp_lib interfaces declared with\nomp_integer_kind (typically kind 4). Added *_8 specific procedures to\nnamed generic interfaces in omp_lib, exported matching Fortran and C\nruntime entry points, and implemented the *_8 functions as thin wrappers\nthat saturate-convert arguments to 32-bit and call the existing APIs.\n\nGitOrigin-RevId: 78f557806dca9c81453e94c038409fb9ad49d063\n"
    },
    {
      "commit": "8c8cd2d831f3b9f86c32703e3d835d352a713ddb",
      "tree": "659398a6cf71c82abd6fbc1e13ca6184e5481c40",
      "parents": [
        "781f58f9b4a66ce10deb16afd2ba8231dd238e87"
      ],
      "author": {
        "name": "Larry Meadows",
        "email": "Lawrence.Meadows@amd.com",
        "time": "Fri Sep 11 12:46:07 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Sep 11 12:53:07 2026 -0700"
      },
      "message": "[OpenMPOpt] Ask the runtime how many of a block\u0027s threads can be workers (#221450)\n\nThe custom state machine gates a thread on `InitCB \u003c BlockHwSize -\nWarpSize`,\nreconstructing the worker count from the block size on the assumption\nthat the\nmain thread occupies a whole warp above them. That arithmetic has to be\nkept in\nstep with whatever launch geometry the toolchain uses, and when it is\nnot, the\nworkers in between are left in neither group, waiting for no parallel\nregion\nwhile the runtime hands them iterations.\n\nExport the number the device runtime already computes in\n`mapping::getMaxTeamThreads()`, which its own generic state machine\ngates on, as\n`__kmpc_get_max_team_threads()`, and gate on that instead. The new entry\npoint is\nadded to the virtual-use callback that keeps the state machine\u0027s callees\nalive,\nand the existing `runtimeFnsAvailable()` check skips the rewrite against\nan older\ndevice runtime.\n\nNFC upstream, where `getMaxTeamThreads()` is `BlockSize - WarpSize`. It\nmatters\nfor a toolchain whose block is not laid out that way, and it is what\nlets the\narithmetic live in one place.\n\nDepends on #221449; the first commit is from that PR.\n\nTested on gfx90a: `llvm/test/Transforms/{OpenMP,Attributor}` 260 passed,\n1\nunsupported. No kernel in the AOMP smoke and smoke-fort suites changes\nexecution\nmode.\n\nGitOrigin-RevId: 652436711805b4aa035341324465c880f19d297d\n"
    },
    {
      "commit": "781f58f9b4a66ce10deb16afd2ba8231dd238e87",
      "tree": "e7d4be14505ac607bfd0456dbd4c941c450bead4",
      "parents": [
        "2e94ce2093ee3dd7434745ebb054970fe8a2b682"
      ],
      "author": {
        "name": "Amit Tiwari",
        "email": "Amit.Tiwari@amd.com",
        "time": "Fri Sep 11 20:06:52 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Sep 11 07:42:58 2026 -0700"
      },
      "message": "[OpenMP][NFC] Explicit run-checks for OpenMP 6.0 loop-splitting (#221651)\n\nMove OpenMP 6.0 test flag to RUN lines for loop splitting\n\nGitOrigin-RevId: 1d3366b2f4b641cdff078d51d49cfc849dacbf84\n"
    },
    {
      "commit": "2e94ce2093ee3dd7434745ebb054970fe8a2b682",
      "tree": "a179f2459c887487ec8274c0432868ac6ca115fc",
      "parents": [
        "2f42b8c08b6f8e2bdc11048f16966e2ffbf3c183"
      ],
      "author": {
        "name": "estewart08",
        "email": "ethan.stewart@amd.com",
        "time": "Wed Sep 09 09:20:44 2026 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 09 07:27:18 2026 -0700"
      },
      "message": "[openmp] - Remove hwloc INSTALL_INTERFACE on omp target (#218923)\n\nReasons for removal:\n1. hwloc is not present in installed headers, therefore a consumer of\nopenmp does not need hwloc\n2. There is no omp target exported currently, which means\nINSTALL_INTERFACE is ignored.\n3. If there is a future omp target exported then there is a possible\nrelocation issue if LIBOMP_HWLOC_INCLUDE_DIR differs in build\nenvironment vs end user\u0027s environment.\n\nWe need to keep BUILD_INTERFACE for unit testing and ompd build.\n\nOriginally introduced in https://reviews.llvm.org/D123888\n\nGitOrigin-RevId: bf5bef4fc3a044818dd4b682caa715c01fabd4fb\n"
    },
    {
      "commit": "2f42b8c08b6f8e2bdc11048f16966e2ffbf3c183",
      "tree": "1df4621edc91522a03f7dfa2ff5737231f7ae33f",
      "parents": [
        "624c9f5ea5bc905da250a98ec892ee14ccf522dc"
      ],
      "author": {
        "name": "Robert Imschweiler",
        "email": "robert.imschweiler@amd.com",
        "time": "Wed Sep 09 11:15:00 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 09 02:24:46 2026 -0700"
      },
      "message": "[libomp] Parse OMP_DEFAULT_DEVICE with new device trait parser (#176166)\n\n... but do not yet expose the new functionalities to the user. This is a\nbackward compatible update that is going to be followed by the step to\nthe OpenMP 6.0 semantics as defined in 4.3.8.\n\nGitOrigin-RevId: 411a8eea0c269fff79700da1b3a9e71914718d4b\n"
    },
    {
      "commit": "624c9f5ea5bc905da250a98ec892ee14ccf522dc",
      "tree": "fe595df4227fc9b6e065c0d327cdedea8fbd2952",
      "parents": [
        "171c7a2e8127b7e33d60c7fe813d14aae17f2993"
      ],
      "author": {
        "name": "Amit Tiwari",
        "email": "Amit.Tiwari@amd.com",
        "time": "Tue Sep 08 22:19:01 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 08 09:52:39 2026 -0700"
      },
      "message": "[OpenMP][OMPD] Add symbol lookup helper for GDB plugin (#221956)\n\nOn LLVM today, `libompd.so` exists with `dlopen`, finds each API with\n`dlsym` and checks error with `dlerror`.\n\n**Missing piece**: There is no single place that:\n\nload this library\nlook up this name\ngive me a real error string\n\n**Issues**:\n\nA later change would have to edit 30+ calls sites,\n`dlerror()` is easy to misuse,\nfailures often drop the OS error string.\n\n**Fix**: Add these helpers:\n\n`ompd_load_library(path)` – load `libompd.so`\n`ompd_get_symbol(name)` – look up one function\n`ompd_get_dl_error()` – last error text or NULL\n\nThe plugin still uses `dlopen/dlsym` inside that helper. No LLVM\nSupport. No `setup.py`.\n\nGitOrigin-RevId: 14e941a0566ae06e982c5d8ddd085697c48fd413\n"
    },
    {
      "commit": "171c7a2e8127b7e33d60c7fe813d14aae17f2993",
      "tree": "1a55077df52684569b80240392b0450c60d092ad",
      "parents": [
        "d362fc70ee1b8ae5aefe3a5c773dbfb3c0962c8f"
      ],
      "author": {
        "name": "Ryotaro Kasuga",
        "email": "kasuga.ryotaro@fujitsu.com",
        "time": "Tue Sep 08 09:17:32 2026 +0900"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Sep 07 17:23:15 2026 -0700"
      },
      "message": "[libomp] Set `KMP_USE_YIELD\u003d2` when `OMP_WAIT_POLICY\u003dactive` if it\u0027s not specified explicitly (#199628)\n\nThis patch sets `KMP_USE_YIELD\u003d0` when `OMP_WAIT_POLICY\u003dactive` and\n`KMP_USE_YIELD` is not explicitly set by the user. This is the same as\nthe value of `KMP_BLOCKTIME` is set to infinite when `KMP_BLOCKTIME` is\nnot explicitly set and `OMP_WAIT_POLICY\u003dactive`.\n\n### Background\n\n`KMP_USE_YIELD` is an environment variable for libomp to control the\nbehavior of threads when they are idle. We can specify 0, 1, or 2 as the\nvalue of `KMP_USE_YIELD`. As I read the code, the behavior is as\nfollows:\n\n- `KMP_USE_YIELD\u003d0`: Threads will NOT yield the CPU when they are idle.\n- `KMP_USE_YIELD\u003d1`: Threads will yield the CPU when they are idle.\n- `KMP_USE_YIELD\u003d2`: Threads will yield the CPU when they are idle if we\nare oversubscribed (i.e., more threads than CPU cores).\n\nThe default value of `KMP_USE_YIELD` is 1, which means that threads will\nyield the CPU when they are idle.\n\nOn the other hand, there is an environment variable `OMP_WAIT_POLICY`\nthat controls the waiting behavior of threads in OpenMP. The OpenMP 6.0\nSpecification\n(https://www.openmp.org/wp-content/uploads/OpenMP-API-Specification-6-0.pdf)\nstates as follows:\n\n\u003e The active value specifies that waiting native threads should mostly\nbe active, consuming processor cycles, while waiting. A compliant\nimplementation may, for example, make waiting native threads spin.\n\nTherefore, I think it is more consistent to set `KMP_USE_YIELD\u003d2` when\n`OMP_WAIT_POLICY\u003dactive`.\nNote: Using `KMP_USE_YIELD\u003d2` instead of 0 here to avoid hanging when\noversubscribed.\n\n### Performance\n\nTo confirm the effect of this patch, I ran SPEC CPU 2017 with several\nconfigurations, including with and without this patch. As a result, I\nobserved that the performance of some benchmarks improved significantly\nwith this patch. Also I didn\u0027t see any performance degradation. Here are\nthe details of the performance improvements:\n\n- Machine: Neoverse V2 (Grace, binding 64 threads to 64 cores)\n- Configuration: `OMP_WAIT_POLICY\u003dactive OMP_NUM_THREADS\u003d64`\n\n| Benchmark | Performance Improvement |\n|-|-|\n| 621.wrf_s | 2.6x |\n| 628.pop2_s | 5.5x |\n\n---\n\nIn conclusion, I think it\u0027s reasonable to set `KMP_USE_YIELD\u003d0` (or 2)\nby default when `OMP_WAIT_POLICY\u003dactive` is specified, when the user\nlikely expects the threads to be active while waiting.\n\nResolve #181784.\n\nGitOrigin-RevId: d91284c7f5747ade780b944ef9d4cb6d8bfbbc1e\n"
    },
    {
      "commit": "d362fc70ee1b8ae5aefe3a5c773dbfb3c0962c8f",
      "tree": "ef3114d24c185fe4cb1ef6444e1ce7893945e955",
      "parents": [
        "9cc5f582976fcd15f41eb718cfa07fa82d7ef24d"
      ],
      "author": {
        "name": "Joseph Huber",
        "email": "huberjn@outlook.com",
        "time": "Thu Sep 03 17:18:12 2026 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 03 15:22:57 2026 -0700"
      },
      "message": "[Clang] Remove the old LLVM offloading driver entirely (#211924)\n\nSummary:\nThe \u0027new\u0027 offloading driver is the unified set of steps to produce\nmerged host and device output. OpenMP offloading has used it by default\nsince Clang 13, CUDA since Clang 21, and HIP / SYCL since Clang 23. The\nsupport has matured in the 23 release and should now cover the remaining\nuse-cases.\n\nThis PR completely removes the support so we stop needing to support\nboth when making updates to the driver.\n\nGitOrigin-RevId: feea42c26039263d5b26976f009dcf0615fb717f\n"
    },
    {
      "commit": "9cc5f582976fcd15f41eb718cfa07fa82d7ef24d",
      "tree": "734979827e13590e4f0d7292a4bb6bffec545131",
      "parents": [
        "97a89662235b5f99f15f9d847d4d1f84f961bd49"
      ],
      "author": {
        "name": "Slava Zakharin",
        "email": "szakharin@nvidia.com",
        "time": "Thu Sep 03 11:14:43 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 03 11:21:20 2026 -0700"
      },
      "message": "Revert \"[OpenMP][Flang] Add integer-kind wrappers to omp_lib (#213505)\" (#221003)\n\nThis reverts commit 01079d2605aabd0beccecb270f51d40119422f04.\n\nAnd also follow-up PRs:\nRevert \"[flang-rt] Fix missing omp_lib symbols in static runtime archive\n(#220821)\"\n\nThis reverts commit 5ba0b37ca29e05939e5bdc77e756140821c23cce.\n\nRevert \"[flang-rt][OpenMP] fix buildbot failures after commit\n01079d2605aabd0beccecb270f51d40119422f04 (#218611)\"\n\nThis reverts commit 175afd988951626ee55de84a966cf1c66e103b59.\n\nGitOrigin-RevId: 484ce3905b30b003c736ef3c88c2e0194fdbd563\n"
    },
    {
      "commit": "97a89662235b5f99f15f9d847d4d1f84f961bd49",
      "tree": "463b9b2b2778bcd05cf7331df5bea77e724f5be0",
      "parents": [
        "6cbb6374aae6587943736143cba34415daa63ba8"
      ],
      "author": {
        "name": "Abid Qadeer",
        "email": "haqadeer@amd.com",
        "time": "Thu Sep 03 16:56:59 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 03 09:00:17 2026 -0700"
      },
      "message": "[OpenMP][CMake] Fix the device runtime build with LLVM_USE_SPLIT_DWARF (#220322)\n\nBuilding with LLVM_USE_SPLIT_DWARF fails in the GPU runtimes:\n\n  ld.lld: error: -r and --gdb-index may not be used together\n\nHandleLLVMOptions appends -Wl,--gdb-index to CMAKE_EXE_LINKER_FLAGS, and\nlibompdevice is an add_executable, so it inherits the flag. Its link is\nnot a real link at all: -flto -r -Wl,--lto-emit-llvm merges the objects\ninto a single bitcode file, for which a gdb index is meaningless.\n\nFix is to turn it off for the target.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\nGitOrigin-RevId: df9e06826c294818818358be1267c38a0455679d\n"
    },
    {
      "commit": "6cbb6374aae6587943736143cba34415daa63ba8",
      "tree": "4ac4318aa8691f3141706a7f29d6e56319938b64",
      "parents": [
        "43930b00af0e4a6aec72b1f3cc668920140b4681"
      ],
      "author": {
        "name": "shivaramaarao",
        "email": "58245296+shivaramaarao@users.noreply.github.com",
        "time": "Thu Sep 03 15:36:55 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 03 03:12:48 2026 -0700"
      },
      "message": "[flang][OpenMP] Fix integer kind handling for omp_lib.h entry points (#218836)\n\nReplace bind(c) interface definitions for OpenMP/KMP routines that take\ninteger arguments with external declarations in omp_lib.h. The strict\ninterfaces caused Flang to fail intrinsic resolution when callers passed\ninteger arguments whose kind differed from omp_integer_kind.\n\nAdded a regression test that includes omp_lib.h and exercises these\nroutines with integer kinds 1, 2, 4, and 8.\n\nGitOrigin-RevId: 50f7c40b113a06242965feec71909595f97fe522\n"
    },
    {
      "commit": "43930b00af0e4a6aec72b1f3cc668920140b4681",
      "tree": "ec7d224e85a439cc761d8e50315bfdccb7844be6",
      "parents": [
        "6c7248515feb11a9171234d4d6893e9645a7acfe"
      ],
      "author": {
        "name": "Robert Imschweiler",
        "email": "robert.imschweiler@amd.com",
        "time": "Wed Sep 02 18:23:02 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 02 09:27:31 2026 -0700"
      },
      "message": "[offload] Add global addrspace qualifier to KLE and member pointers (#213918)\n\nClaude assisted with this patch.\n\nGitOrigin-RevId: d6aa82442212a7d55faf107c5bbc81b97f1b66f3\n"
    },
    {
      "commit": "6c7248515feb11a9171234d4d6893e9645a7acfe",
      "tree": "427e019b47407f63e7b64780c2a6ebb7bf7a0901",
      "parents": [
        "1e9a97f3fd6b8ad4e2268172dc2e62abc026a702"
      ],
      "author": {
        "name": "Amit Tiwari",
        "email": "Amit.Tiwari@amd.com",
        "time": "Wed Sep 02 14:44:34 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 02 02:17:55 2026 -0700"
      },
      "message": "[Clang][OpenMP] Canonicalize Intra-tiles in Loop Tiling (#191114)\n\nThis PR canonicalizes the intra-tile loop in OpenMP loop tiling.\n\nTake a simple example:\n\n```cpp\n#pragma omp tile sizes(4)\nfor (int i \u003d 0; i \u003c 6; ++i)\n  body(i);\n```\n\n`clang` turns the above into **2 nested loops**:\n\n- Outer (aka *floor*) loop iterating in steps of 4.\n- Inner (aka *intra-tile*) loop iterating over the tiles — `(0, 1, 2,\n3)` and `(4, 5)` — since 6 is not a multiple of 4, this results in the\nlast **partial tile**.\n\nSo, to make sure the partial/remainder tile doesn\u0027t overshoot, we may\nenforce two kinds of intra-tile shapes, where both shapes produce the\nsame visible result:\n\n**Shape 1** (*vectorized form*; default):\n\n```cpp\nfor (i \u003d floor; i \u003c min(floor + 4, 6); ++i)\n  body(i);\n```\n\n**Shape 2** (*canonicalized form*):\n\n```cpp\nfor (i \u003d floor; i \u003c floor + 4; ++i)\n  if (i \u003c 6)                 // guard: skip the overshoot\n    body(i);\n```\n\nA subtle point: Shape 2 should be kept **only when the intra-tile is\nconsumed by a parent directive** (e.g. `collapse`). This further\npromotes no disruption in the generic C/C++ for-loop codegen pipeline\nand also preserves the vectorized form (saving iterations), unless\notherwise.\n\n## Solution\n\nAlways preserve **Shape 1** wrapped in a new internal droppable\nattribute `OMPInvariantPredicateBoundAttr` carrying three expressions:\n\n- **`RectCond`** — a rectangular bound (`.tile.iv \u003c .floor.iv +\ntilesize`)\n- **`Predicate`** — a body guard for the remainder tile (`.tile.iv \u003c N`)\n- **`TileSize`** — the floor-independent, loop-nest invariant per-tile\ntrip count\n\nIf nothing ever reads the note, it\u0027s completely invisible — the loop\njust runs in its natural shape, exactly like plain `clang`. That\u0027s why\nit\u0027s *droppable*.\n\nOnly when `collapse` (or a similar directive) actually consumes this\nloop does Clang (`checkOpenMPIterationSpace` / `checkOpenMPLoop`) read\nthe hint and reinterpret the loop as rectangular.\n\nGitOrigin-RevId: ca70db3c250f25f9286ff1aeb9164d4b93a5fdc6\n"
    },
    {
      "commit": "1e9a97f3fd6b8ad4e2268172dc2e62abc026a702",
      "tree": "ce085741abc470b6e4f4bd42068faa71f683aee8",
      "parents": [
        "6b24f16dd134bd835095ed5562b5f2af3eff48e2"
      ],
      "author": {
        "name": "Robert Imschweiler",
        "email": "robert.imschweiler@amd.com",
        "time": "Tue Sep 01 09:40:22 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 01 00:47:49 2026 -0700"
      },
      "message": "[libomp] Atomically claim library unregistration (#216713)\n\nClaude assisted with this patch.\n\nFollow-up to https://github.com/llvm/llvm-project/pull/215988.\n\nGitOrigin-RevId: 19f66fb00411832bd0059d4c7c2b97d987915841\n"
    },
    {
      "commit": "6b24f16dd134bd835095ed5562b5f2af3eff48e2",
      "tree": "2fbf13ae9948f7287c1409094eee8821a212e499",
      "parents": [
        "06116929d92f2c99037c5a14f7cabde6a8769b98"
      ],
      "author": {
        "name": "Yuta Mukai",
        "email": "mukai.yuta@fujitsu.com",
        "time": "Tue Sep 01 13:47:08 2026 +0900"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 31 21:52:11 2026 -0700"
      },
      "message": "[OpenMP][libomp] Fix dist barrier arrival synchronization (#213845)\n\nMake distributedBarrier::stillNeed atomic and use release/acquire\nordering for distributed barrier gather arrival flags.\n\nThe old volatile stillNeed flag did not synchronize an arriving thread\u0027s\npre-barrier writes with the thread that observed its arrival. On weakly\nordered architectures, a group leader could observe stillNeed \u003d\u003d 0\nbefore the arriving thread\u0027s pre-barrier writes were visible. This\nallowed another thread to pass the barrier and read stale data written\nbefore the barrier.\n\nUse release stores when publishing stillNeed \u003d\u003d 0. Keep the spin loops\non relaxed loads, then perform one acquire fence after all expected zero\nvalues have been observed. This connects the arriving threads\u0027\npre-barrier writes to the observer through the standard release/acquire\nhappens-before chain, without using acquire loads on every poll.\n\nThe same pattern is used when a group leader publishes its own stillNeed\n\u003d\u003d 0 after the in-group gather completes. The existing go-flag\nrelease/acquire path then carries the ordering to threads leaving the\nbarrier.\n\nInitialization and next-iteration reset stores remain relaxed because\nthey do not publish pre-barrier data.\n\nOn x86, this does not change the generated instruction sequence for the\naffected stillNeed polling/arrival code, since TSO already provides the\nneeded ordering for ordinary loads and stores.\n\nReproducer:\n\nI used the following stress test to reproduce the distributed-barrier\nvisibility issue on AArch64 (Grace).\n\n`test.c`:\n\n```c\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cstring.h\u003e\n#include \u003comp.h\u003e\n\nint main() {\n  int nt;\n#pragma omp parallel\n#pragma omp master\n  nt \u003d omp_get_num_threads();\n\n  int n \u003d 1024;\n  int *p \u003d aligned_alloc(64, nt * n * sizeof(int));\n  memset(p, 0, nt * n * sizeof(int));\n\n#pragma omp parallel\n  {\n    int t \u003d omp_get_thread_num();\n    int *pt \u003d p + t * n;\n    int *pt2 \u003d p + ((t + 1) % nt) * n;\n\n    for (int it \u003d 1; it \u003c\u003d 100000; it++) {\n      for (int i \u003d 0; i \u003c n; i++)\n        pt[i] \u003d it;\n\n#pragma omp barrier\n\n      for (int i \u003d 0; i \u003c n; i++) {\n        if (pt2[i] !\u003d it) {\n          printf(\"thread #%d observes pt2[%d] !\u003d %d\\n\", t, i, it);\n          abort();\n        }\n      }\n\n#pragma omp barrier\n    }\n  }\n\n  printf(\"ok\\n\");\n  return 0;\n}\n```\n\n`noise.c`:\n\n```c\n// background memory-bandwidth noise\n#include \u003cstdlib.h\u003e\n#include \u003comp.h\u003e\n\nint main() {\n  long N \u003d 1024L*1024;\n\n#pragma omp parallel\n  {\n    long *b \u003d malloc(sizeof(long)*N);\n\n    for (long j\u003d0; j\u003c1000; j++)\n      for (long i \u003d 0; i \u003c N; i +\u003d 8)\n        b[i] +\u003d 1;\n  }\n  return 0;\n}\n```\n\nBuild and run:\n\n```bash\nclang test.c -O -fopenmp -o test\nclang noise.c -O -fopenmp -o noise\n\n./noise \u0026\n\nKMP_PLAIN_BARRIER_PATTERN\u003ddist,dist \\\nKMP_FORKJOIN_BARRIER_PATTERN\u003ddist,dist \\\nKMP_REDUCTION_BARRIER_PATTERN\u003ddist,dist \\\nOMP_NUM_THREADS\u003d10 \\\n./test\n```\n\nWith the old runtime, this can fail as follows:\n\n```text\nthread #5 observes pt2[112] !\u003d 343\nAborted (core dumped)\n```\n\nThe same test passes with the patched runtime.\n\nGitOrigin-RevId: 0fa6182e280d36dc73472f9a79dcb1b82d548893\n"
    },
    {
      "commit": "06116929d92f2c99037c5a14f7cabde6a8769b98",
      "tree": "a9ddbd35fe2e3105624498c55611ca2632b56a8a",
      "parents": [
        "71a8b0c19d7878022f13ef7ab82e45cf72a4058e"
      ],
      "author": {
        "name": "shivaramaarao",
        "email": "58245296+shivaramaarao@users.noreply.github.com",
        "time": "Mon Aug 24 20:48:12 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 08:20:43 2026 -0700"
      },
      "message": "[OpenMP][Flang] Add integer-kind wrappers to omp_lib (#213505)\n\nMany OpenMP routines in omp_lib currently accept only\ninteger(kind\u003domp_integer_kind) arguments, where omp_integer_kind maps to\nc_int. As a result, Flang\u0027s type checking rejects calls that pass\ninteger(1), integer(2), or integer(8) arguments. To improve\ncompatibility, wrapper procedures have been added in the omp_lib module\nfor applicable routines, enabling support for integer(1), integer(2),\ninteger(4), and integer(8) argument types. The interfaces are added in\nomp_lib module and the implementations are part of omp_lib_impl sub\nmodule.\n\nSimilar changes are required in omp_lib.h and will be addressed in a\nseparate pull request.\n\nFixes #123948.\n\nAssisted-by: Cursor\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\nGitOrigin-RevId: 01079d2605aabd0beccecb270f51d40119422f04\n"
    },
    {
      "commit": "71a8b0c19d7878022f13ef7ab82e45cf72a4058e",
      "tree": "68e4173e2adc227b3e067dc6d049e8c4e8b27607",
      "parents": [
        "32fc9a8d743282d144577ed74f3747c416654ccc"
      ],
      "author": {
        "name": "Robert Imschweiler",
        "email": "robert.imschweiler@amd.com",
        "time": "Mon Aug 24 13:55:18 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 05:00:17 2026 -0700"
      },
      "message": "[offload] Pool host and shared allocations (#214754)\n\nRoute them through a memory manager, like the device allocations. Also,\nmove the registration as pinned memory to the plugin site since only the\nplugin knows if the corresponding host/shared memory is pinned. Improves\nperformance of affected allocations by ballpark 1,000x.\n\nGitOrigin-RevId: a79b74db04e77f154c68d5f5f87e1ed674e436bf\n"
    },
    {
      "commit": "32fc9a8d743282d144577ed74f3747c416654ccc",
      "tree": "511a79395e9a167b442a532dd22e449ed4fc99b3",
      "parents": [
        "0184132831d09b11bc7c9589b176e6f47da8c9fb"
      ],
      "author": {
        "name": "Jan André Reuter",
        "email": "jan@zyten.de",
        "time": "Thu Aug 20 20:18:30 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 20 11:20:35 2026 -0700"
      },
      "message": "[NFCI][OpenMP][OMPT] Move `for_static_init` work callbacks into macro (#217259)\n\n`__kmp_for_static_init` uses a very similar pattern for dispatching the\nwork callback to an attached tool throughout the function. Hence, avoid\nthe duplication by moving the pattern into a macro, taking the number of\nloop iterations as an argument. Without OMPT, this macro is a no-op.\n\nSigned-off-by: Jan André Reuter \u003cjan@zyten.de\u003e\nGitOrigin-RevId: 0b2e935b198a58439a42c2fda15819bcfea93b16\n"
    },
    {
      "commit": "0184132831d09b11bc7c9589b176e6f47da8c9fb",
      "tree": "bcb19abbbeb5e3e3359cb8e7512c195f4cb28329",
      "parents": [
        "3954005ebb77b59f1185d329679799a4bba7beb8"
      ],
      "author": {
        "name": "David Justo",
        "email": "david.justo.1996@gmail.com",
        "time": "Thu Aug 20 07:28:16 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 20 07:30:11 2026 -0700"
      },
      "message": "[NFC][CodeQL] Suppress CodeQL warning on intentional ITT collector library loading (#217116)\n\n**Context:** Hey folks, I\u0027m from the MSVC ASan team, which forks LLVM.\nWe\u0027re getting some internal static analysis alerts about some code in\nLLVM. This PR aims to make non-functional changes to make those security\nalerts go away. I hope these are welcomed changes, let me know if not.\n\n**The alert:**\n\nCodeQL flags passing the library to load in `_N_(init_ittlib)` through\nthe `INTEL_LIBITTNOTIFY32` or `INTEL_LIBITTNOTIFY64` environment\nvariable as dangerous because the environment variable is technically\nuncontrolled external input.\n\nAs far as I can tell, this behavior is intentional, as selecting an ITT\ncollector library through an environment variable matches the pattern\ndescribed in Intel\u0027s ITT API documentation.\n\n**This PR** suppresses the warning in this case using:\n\n// codeql[cpp/uncontrolled-process-operation]\n\n**Intel ITT documentation:**\nhttps://intel.github.io/ittapi/src/compile-and-link-with-itt-api.html\n\n**CodeQL warning docs:**\n\nhttps://codeql.github.com/codeql-query-help/cpp/cpp-uncontrolled-process-operation/\n\nGitOrigin-RevId: c7015c963df3745509047c071b918eef61c9bf92\n"
    },
    {
      "commit": "3954005ebb77b59f1185d329679799a4bba7beb8",
      "tree": "a38058264789c23e43020d7775a16fadf35d9893",
      "parents": [
        "20083315613c299394a04c9837872cf9a1aedd63"
      ],
      "author": {
        "name": "Robert Imschweiler",
        "email": "robert.imschweiler@amd.com",
        "time": "Mon Aug 17 09:22:49 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 17 00:25:41 2026 -0700"
      },
      "message": "[libomp] Fix hang when a fatal error is raised before library registration (#215988)\n\nUncovered by debug-build testing, not triggered for non-debug builds due\nto absence of KMP_DEBUG_ASSERT.\n\nClaude assisted with this patch.\n\nGitOrigin-RevId: a6d40b40c42d95963f915234851855f456a55b53\n"
    },
    {
      "commit": "20083315613c299394a04c9837872cf9a1aedd63",
      "tree": "251bc8cc0d3d4d1f200d91eb20ce3686d309fd02",
      "parents": [
        "c657e280c46574d466f5234c22a95c8e305f575b"
      ],
      "author": {
        "name": "Amilendra Kodithuwakku",
        "email": "amilendra.kodithuwakku@arm.com",
        "time": "Fri Aug 14 10:03:41 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 14 02:05:30 2026 -0700"
      },
      "message": "[OpenMP][OMPT] Fix warning : extra tokens at end of #endif directive (#216279)\n\nGitOrigin-RevId: 16fe1b642d3b8e8c5a7ba3c55965434f4d31da0f\n"
    },
    {
      "commit": "c657e280c46574d466f5234c22a95c8e305f575b",
      "tree": "23f30ac408168e06a80cfa8d6db1e142f72b6754",
      "parents": [
        "a7c919b87122bfadf05f5f4ba57727144a8af0a9"
      ],
      "author": {
        "name": "Jan André Reuter",
        "email": "j.reuter@fz-juelich.de",
        "time": "Thu Aug 13 20:20:52 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 13 11:26:00 2026 -0700"
      },
      "message": "[OpenMP][OMPT] Mark dispatch callback as sometimes on registration (#212991)\n\nRecently, multiple issues in the implementation of the `dispatch`\ncallback have been found (e.g., #212784, #207746). In these, the code\ngeneration done by Clang and Flang does not provide a sufficient amount\nof information for the runtime to dispatch the correct amount of flags,\nor a callback for a given event at all.\n\nThese missing and incorrect events do not satisfy OpenMP\u0027s requirement\nfor `ompt_set_always` as a registration result, as the runtime does not\ntrace or invoke the correct callback whenever an associated event occurs\n(OpenMP v5.2, p. 457, l.5-6).\nAs such, change the registration result for the `dispatch` callback to\n`ompt_set_sometimes` for now, which is fulfilled. Here, an\nimplementation can dispatch callbacks or trace an implementation-defined\nsubset of associated event occurrences.\n\nBased on the changed registration result, a tool can then decide if they\nare still interested in recording the information provided by the\nruntime implementation.\n\nSigned-off-by: Jan André Reuter \u003cj.reuter@fz-juelich.de\u003e\nGitOrigin-RevId: 199678b395de15401a7eb751fe3e24c10997b470\n"
    },
    {
      "commit": "a7c919b87122bfadf05f5f4ba57727144a8af0a9",
      "tree": "fc5300caab693039af5d5ea706feb56edefdabce",
      "parents": [
        "30435a55113c14746736cb69d1d9421c1cda644c"
      ],
      "author": {
        "name": "Joachim",
        "email": "jenke@itc.rwth-aachen.de",
        "time": "Thu Aug 13 20:15:03 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 13 11:20:47 2026 -0700"
      },
      "message": "[OpenMP][OMPT] Make omp_control_tool enums available in omp-tools.h (#216076)\n\nOpenMP 6.1 will introduce this change: the enums must be available by\nincluding either header file, but including both must also be valid.\n\nGitOrigin-RevId: dabc3833ba1d2c9994bcf3a94ee66790f470ba82\n"
    },
    {
      "commit": "30435a55113c14746736cb69d1d9421c1cda644c",
      "tree": "bcfb52c6143e1c9afc2cbb023e2ce9f6cd54a9bb",
      "parents": [
        "1ac14937a7e603203e76bf73c1bd9bf42d119cc4"
      ],
      "author": {
        "name": "Robert Imschweiler",
        "email": "robert.imschweiler@amd.com",
        "time": "Thu Aug 13 10:16:25 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 13 01:20:35 2026 -0700"
      },
      "message": "[libomp] Fix debug build after #176164 (#215961)\n\nFixes https://github.com/llvm/llvm-project/issues/215937.\n\nGitOrigin-RevId: 26646686161b302f7f53776637f1d3cc1eca4b01\n"
    },
    {
      "commit": "1ac14937a7e603203e76bf73c1bd9bf42d119cc4",
      "tree": "fcfc48c96455224a97025a28fb8f2f61abd00f05",
      "parents": [
        "6e0ea03e5c9d07dfd599aed2fa55caf3b70a2ae4"
      ],
      "author": {
        "name": "Kelvin Li",
        "email": "kli@ca.ibm.com",
        "time": "Wed Aug 12 15:19:38 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 12 12:21:49 2026 -0700"
      },
      "message": "[OMP] Remove omp_get_ancestor_thread_num and omp_get_team_size in ompx.h (#215841)\n\nThese two routines are standardized and already exist in omp.h.\n\nGitOrigin-RevId: 69f24427789f659229b9c2417fe2f335dd9f95db\n"
    },
    {
      "commit": "6e0ea03e5c9d07dfd599aed2fa55caf3b70a2ae4",
      "tree": "bc750d025698f805719c2abe86a33fda3b29fbe0",
      "parents": [
        "ce7d95f4b56417e322c3fcb97dcded66f41a5a55"
      ],
      "author": {
        "name": "Robert Imschweiler",
        "email": "robert.imschweiler@amd.com",
        "time": "Wed Aug 12 18:08:00 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 12 09:17:15 2026 -0700"
      },
      "message": "[libomp] OpenMP 6.0: Add device trait parser (#176164)\n\nOpenMP 6.0 introduced a device trait specification language for the\nenvironment variables OMP_AVAILABLE_DEVICES (4.3.7) and\nOMP_DEFAULT_DEVICE (4.3.8).\n\nThis commit defines a grammar for that language and implements a parser\nfor a large part of this grammar.\n\nGitOrigin-RevId: e4bb0acccb4fd033c6ac7a4e0200b62ed101aeab\n"
    },
    {
      "commit": "ce7d95f4b56417e322c3fcb97dcded66f41a5a55",
      "tree": "27d34949ad067a9a43fbfd7663b4b74cc5d31415",
      "parents": [
        "1061130f8eac670b89cefd771fdabeed2e5a91f8"
      ],
      "author": {
        "name": "Spencer Bryngelson",
        "email": "sbryngelson@gmail.com",
        "time": "Tue Aug 11 10:46:23 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 11 07:50:49 2026 -0700"
      },
      "message": "[OpenMP][DeviceRTL] Use the actual block size in the SPMD no-loop distribute path (#214073)\n\nIn the SPMD no-loop path the iteration index is `BId * NumThreads +\nTId`, so `NumThreads` has to\nbe the size of the block the threads are actually in. `DistributeFor`\nuses the caller-supplied\nvalue as-is. If that value is larger than the block size, the index\nstrides past the end of each\nblock and the iterations in between are never run.\n\nFixes #198621.\n\nReproduced on gfx90a, `num_teams(4)`, 128 iterations, varying the value\npassed as `NumThreads`\nagainst the threads the block actually has:\n\n| NumThreads passed | threads in block | iterations not run |\n|---|---|---|\n| 256 | 32 | 96 of 128 |\n| 256 | 64 | 64 of 128 |\n| 128 | 32 | 96 of 128 |\n| 64 | 64 | 0 |\n\nExactly as many iterations run as there are threads in the block, and\nthe rest are dropped. With\nthis patch all four cases run all 128.\n\nAMD carries the same fix downstream as ROCm/llvm-project#3058.\n\n### Testing\n\nThe new test calls `__kmpc_distribute_for_static_loop_4u` directly. That\nis unusual, and the reason\nis that no C or C++ construct reaches it: clang lowers worksharing loops\nto\n`__kmpc_for_static_init_4`, and only flang emits\n`__kmpc_distribute_for_static_loop_*`. Verified on\ndevice IR from both frontends. Calling the entry directly keeps the test\nindependent of the Fortran\nruntime, which upstream does not ship for the device.\n\nVerified the test fails without the patch (`unwritten: 96`) and passes\nwith it (`unwritten: 0`).\n\nAlso ran 66 Fortran offload probes covering collapse, reductions,\nprivate and firstprivate arrays,\nnested parallel, simd, allocatable, atomic and complex arithmetic, in\nno-loop mode with\n`exec_mode` confirmed to be 6 rather than assumed: all pass before and\nafter, so the clamp does not\ndisturb the cases where the caller\u0027s value was already correct.\n\n---\n\nParts of this change were written or audited with Claude Code. I have\nreviewed all of it and take\nfull responsibility for the contribution. See\n`llvm/docs/AIToolPolicy.md`.\n\nGitOrigin-RevId: 9c317bbbdbeaaf2b2e039ece201baba8f21f9d2a\n"
    },
    {
      "commit": "1061130f8eac670b89cefd771fdabeed2e5a91f8",
      "tree": "28f9a74f1ebdbc03d12e30eb6010048085db94d2",
      "parents": [
        "b22cea1b2bd38ecf57c097a266a4d2e12593f2fe"
      ],
      "author": {
        "name": "Michael Halkenhäuser",
        "email": "MichaelGerald.Halkenhauser@amd.com",
        "time": "Sat Aug 08 21:56:32 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat Aug 08 13:00:28 2026 -0700"
      },
      "message": "[Offload][OMPT][NFCI] Call ompt_libomp_connect instead of dlopen libomp (#214556)\n\nconnectLibrary() reached libomp\u0027s ompt_libomp_connect through\nOmptLibraryConnectorTy, which dlopens \"libomp.so\" and resolves the\nsymbol at run time. That cannot do anything the linker has not already\ndone: libomptarget links libomp and imports seven __kmpc_* symbols from\nit, so libomp.so is a DT_NEEDED entry, and libomp defines and exports\nompt_libomp_connect unconditionally -- as a stub in kmp_utility.cpp when\nbuilt without OMPT support. Declare it, call it, and delete Connector.h.\n\nAI-assisted.\n\nGitOrigin-RevId: 6824484b6e68ba7f2dff2f63e83f237112f03d9c\n"
    },
    {
      "commit": "b22cea1b2bd38ecf57c097a266a4d2e12593f2fe",
      "tree": "5b55aeb5dbec107456075dd6abd95ee016c874e2",
      "parents": [
        "24c122e23ba8eda6d1644b42d5bb6f26340f2c7e"
      ],
      "author": {
        "name": "Jan André Reuter",
        "email": "j.reuter@fz-juelich.de",
        "time": "Fri Aug 07 12:41:59 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 07 03:45:31 2026 -0700"
      },
      "message": "[OpenMP][OMPT] Error when registering EMI and non-EMI callbacks (#213697)\n\nThe OpenMP specification includes a restriction for registering both EMI\nand non-EMI callbacks (e.g. `ompt_callback_target`, OpenMP v5.2, p. 503,\nl. 18-20):\n\n  These callbacks must not be registered at the same time.\n\nHowever, this was not respected in the runtime. A tool was able to\nregister both, receiving `ompt_set_always` for each `ompt_set_callback`\ncall. When an event associated with the EMI or non-EMI callbacks was\ndispatched and both callbacks were registered, only the EMI version was\ndispatched.\n\nTo align the runtime behavior with the OpenMP specification, return\n`ompt_set_error` when a tool tries to register both the EMI and non-EMI\nvariant for a callback. With this, only the tool\u0027s first registration is\nused.\n\nUpdate the offload `veccopy_disallow_both.c` test, which already tested\nthe prior, non-compliant, behavior.\n\nCloses #212959\n\nSigned-off-by: Jan André Reuter \u003cjan@zyten.de\u003e\nGitOrigin-RevId: 09375e336d7cdbe96018300ef69d2be7d3c441a2\n"
    },
    {
      "commit": "24c122e23ba8eda6d1644b42d5bb6f26340f2c7e",
      "tree": "3e1114ab008b881f18e5d25f2798b44c75f7500d",
      "parents": [
        "eb183a6b5be2d2cc52397156c1b5d093fadca56b"
      ],
      "author": {
        "name": "arsnyder16",
        "email": "asnyder@minitab.com",
        "time": "Wed Aug 05 12:01:27 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 05 09:05:52 2026 -0700"
      },
      "message": "[openmp][WebAssembly] Add support for wasm64 (#181669)\n\nBuilding on the existing ability to build wasm32, this change mostly\nredefines `M_ARCH_WASM` to `M_ARCH_WASM32` and then introduces\n`M_ARCH_WASM64` based on `__wasm64__` define\n\nGitOrigin-RevId: 019fc9efa2dc8f36d9b4794caeca0738a06db667\n"
    },
    {
      "commit": "eb183a6b5be2d2cc52397156c1b5d093fadca56b",
      "tree": "110bf56ff460b270eb598bb5b090da1275ed22f7",
      "parents": [
        "72d1e723a7e0b000b86c6cf0600c91b80feb6177"
      ],
      "author": {
        "name": "arsnyder16",
        "email": "asnyder@minitab.com",
        "time": "Tue Aug 04 13:52:44 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 04 10:55:38 2026 -0700"
      },
      "message": "[OpenMP] Simplify generic microtask dispatch (#214004)\n\nReplace the generic microtask dispatcher\u0027s handwritten function-pointer\ntypes and calls with a variadic-template helper and a macro for each\nsupported argument count.\n\nThe dispatcher still casts each microtask to the exact fixed-arity\nsignature required by platforms such as WebAssembly. This is intended as\na refactor only: the existing limit of 15 microtask arguments and the\ndiagnostic for larger argument counts remain unchanged.\n\nThis reduces the repetitive code and makes future changes to the\nsupported argument range easier to review.\n\nSplit out from #211071\n\nGitOrigin-RevId: af14456a2bac55026b2d57cbf14b3905c452b8a4\n"
    },
    {
      "commit": "72d1e723a7e0b000b86c6cf0600c91b80feb6177",
      "tree": "6e480e321309825eb41763e19012919808c44e1a",
      "parents": [
        "ebadff04e0ebacec3b879d61e6159baf7d3e1628"
      ],
      "author": {
        "name": "jandrovins",
        "email": "46629861+jandrovins@users.noreply.github.com",
        "time": "Mon Aug 03 21:33:56 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 03 21:36:13 2026 -0700"
      },
      "message": "[Offload] Save jit image (#212384)\n\nThis PR adds the envar LIBOMPTARGET_JIT_SAVE_IMAGE_FILENAME\nto indicate that the device image generated after JIT compilation\nshould be saved to a file.\n\nGitOrigin-RevId: 513a02ee150335a84c39ab2e2d0f965f1b0e260e\n"
    },
    {
      "commit": "ebadff04e0ebacec3b879d61e6159baf7d3e1628",
      "tree": "3fb11665809bc048bd3ca49da75d5c955e005767",
      "parents": [
        "ea3e59190ff9d9d7ece3b473634a7e9726f50026"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Aug 03 12:43:03 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 03 12:45:43 2026 -0700"
      },
      "message": "[OpenMP] Remove Wasm limitation from openmp/runtime/cmake/config-ix.cmake (#213742)\n\nThis was originally added #71297, but this limitation no longer applies\nto emscripten, and wasi-sdk will surly support this once threading is\nready there.\n\nGitOrigin-RevId: 895c744404962166c3d46f628ac38622fb47ea10\n"
    },
    {
      "commit": "ea3e59190ff9d9d7ece3b473634a7e9726f50026",
      "tree": "c23234f6a2dea253aee1151c339a3005e3d4ed37",
      "parents": [
        "f138af3004d5a80e65998832ce6fbcebd65d629b"
      ],
      "author": {
        "name": "Robert Imschweiler",
        "email": "robert.imschweiler@amd.com",
        "time": "Sun Aug 02 14:01:32 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Aug 02 05:05:45 2026 -0700"
      },
      "message": "[offload][OpenMP] Add atomic cross-team reductions (#209298)\n\nRegular cross-team reductions have two phases: the intra-team reduction\nand the inter-team reduction. Atomic cross-team reductions replace the\nsecond phase with a atomic instruction which is used by the main thread\nof each team to directly fold the result of the intra-team reduction\ninto the final result. Since this requires a combination of \"data type\"\nand \"combine operation\" for which an atomic instruction is available,\nonly some (but very common) reductions can be transformed to atomic\nreductions. In cases where multiple reductions are performed on the same\nconstruct, the atomic path is only taken if all reductions can be\ntransformed. Otherwise, we fall back to the regular cross-team reduction\nusing a buffer with per-team slots. This is not strictly necessary, but\nhybrid reductions would induce more complexity with questionable\nbenefit.\n\nSelecting an atomic path might not be the best option for every\nsituation, which is why it is not enabled by default. Instead, it can be\nenabled via `-fopenmp-target-atomic-reduction`. Note that enabling the\natomic path will not *force* atomic reductions. They will only be\napplied if possible, as described above.\n\nThe performance (measured with https://github.com/ro-i/xteam-test @\nc71339705091500f731e2a39f247d2660bacbdce, array size 177,777,777) is up\nto +15% faster (aka, more throughput) for supported reductions on a\ngfx942, with no noticeable regressions.\nExample:\n- sum reduction, type double: +10.22% faster\n- sum reduction, type uint: +15.57% faster\n- sum reduction, type ulong: +13.31% faster\n\nOn a gfx90a, there is little to negative benefit:\n- sum reduction, type double: -4.32% faster (aka, slower)\n- sum reduction, type uint: +3.08% faster\n- sum reduction, type ulong: +1.68% faster\n\nClaude assisted with this patch.\n\nGitOrigin-RevId: 29a956e40a1f617887ecfeb02ae844102c4a5a48\n"
    },
    {
      "commit": "f138af3004d5a80e65998832ce6fbcebd65d629b",
      "tree": "845580ead81f8d61951502c9a76a135e5b5c639a",
      "parents": [
        "51ca911d361a8fb88f568f0d7d1ad8f57bfeadbe"
      ],
      "author": {
        "name": "Robert Imschweiler",
        "email": "robert.imschweiler@amd.com",
        "time": "Tue Jul 28 18:16:31 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jul 28 09:20:47 2026 -0700"
      },
      "message": "[OpenMP][offload] Fix Global addrspace (#212529)\n\nGitOrigin-RevId: 3a30af978df0b6f39505fd702f4bfd55b3adb96c\n"
    },
    {
      "commit": "51ca911d361a8fb88f568f0d7d1ad8f57bfeadbe",
      "tree": "a03f0d8944ad24600118bbcaebf5a8d24d7f20a9",
      "parents": [
        "ad9149eb436bc5a55e1c2e12e2ff18f87bc16320"
      ],
      "author": {
        "name": "julianmorillo",
        "email": "julianmorillo@users.noreply.github.com",
        "time": "Fri Jul 24 11:24:36 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jul 24 02:25:24 2026 -0700"
      },
      "message": "FIX some OMPT tests that fail on RISC-V (#156914)\n\nThere is a known issue with these tests (see\nhttps://github.com/llvm/llvm-project/issues/35661).\nIt looks that the behaviour is very architecture specific and it was\nsomehow solved for aarch64 but no mention to riscv64.\n\nGitOrigin-RevId: 4e19543b1a85e635a8c663081bfdf42488795623\n"
    },
    {
      "commit": "ad9149eb436bc5a55e1c2e12e2ff18f87bc16320",
      "tree": "55c6c4212aabafa1324f4a7d30c0758f34090579",
      "parents": [
        "58e03af04b608076ad39563d3873732925d08c47"
      ],
      "author": {
        "name": "Sunil Shrestha",
        "email": "sunil.shrestha@hpe.com",
        "time": "Wed Jul 22 09:03:34 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jul 22 09:05:32 2026 -0700"
      },
      "message": "[Flang][OpenMP] Add support for interop construct (#203959)\n\nThis adds support for the OpenMP interop construct, which enables\ninteroperability with foreign runtime environments (e.g., CUDA, HIP).\nThe init, use, and destroy action clauses are lowered from the Fortran\nparse tree to MLIR interop ops and translated to the appropriate runtime\ncalls. The omp_lib module is extended with interop query API interfaces,\nproperty constants, and return code constants. A semantics fix relaxes\nthe depend/targetsync constraint for use/destroy directives where the\ninterop type was established at a separate init site. Unsupported depend\nclauses and prefer_type selector-list forms emit explicit diagnostics\ninstead of being silently dropped.\n\nAssisted-by: Claude Opus 4.6\nGitOrigin-RevId: 22351c74e21ff19633cc101c6d92c7c179e5a4a3\n"
    },
    {
      "commit": "58e03af04b608076ad39563d3873732925d08c47",
      "tree": "f941c217411c6f394d3dbb905060e78cfba130e0",
      "parents": [
        "792effdf15d4f437d7b8bdc4620e276fd4ca12a3"
      ],
      "author": {
        "name": "Spencer Bryngelson",
        "email": "shb@gatech.edu",
        "time": "Wed Jul 22 10:49:38 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jul 22 07:50:35 2026 -0700"
      },
      "message": "[openmp][cmake] Match GPU triples consistently in openmp/module (#211138)\n\nFixes #211135.\n\n`openmp/module/CMakeLists.txt:29` gates the GPU-only Fortran compile\noptions on `\"^amdgcn|^nvptx\"`, while `openmp/CMakeLists.txt:176-177`\nselects host-vs-device layout for the same build using\n`\"^amdgpu|^amdgcn|^nvptx|^spirv64\"` against both\n`LLVM_DEFAULT_TARGET_TRIPLE` and `CMAKE_CXX_COMPILER_TARGET`.\n\nAll four offload cache files use the triple `amdgpu-amd-amdhsa`, which\n`^amdgcn` does not match, so `-nogpulib -flto` are silently not applied\nto `libomp-mod` in the recommended AMDGPU offload configurations.\n\nCompute the test once as `LIBOMP_TARGET_IS_GPU` in\n`openmp/CMakeLists.txt` and use it at both sites, rather than\nduplicating a widened regex. The conditions differ, not just the\npatterns: copying the regex alone would leave a build that sets\n`CMAKE_CXX_COMPILER_TARGET` without `LLVM_DEFAULT_TARGET_TRIPLE` still\ntaking the device path in `openmp/` while `libomp-mod` misses the flags.\n`libomp-mod` compiles Fortran, so `CMAKE_Fortran_COMPILER_TARGET` is\nalso consulted; neither site did before.\n\nEvaluated with CMake\u0027s regex engine:\n\n| triple | before | after |\n|---|---|---|\n| `amdgpu-amd-amdhsa` | 0 | 1 |\n| `amdgcn-amd-amdhsa` | 1 | 1 |\n| `nvptx64-nvidia-cuda` | 1 | 1 |\n| `spirv64-amd-amdhsa` | 0 | 1 |\n| `x86_64-unknown-linux-gnu` | 0 | 0 |\n\n`^spirv64` only brings `module/` in line with\n`openmp/CMakeLists.txt:176`, which already routes spirv64 to `device/`.\nHost builds are unaffected.\n\nRoughly five other sites carry the same `amdgcn`-only pattern\n(`offload/CMakeLists.txt:30`, `flang-rt/CMakeLists.txt:126`,\n`flang-rt/lib/runtime/CMakeLists.txt:317`,\n`flang-rt/cmake/modules/AddFlangRT.cmake:298`,\n`cmake/Modules/GetToolchainDirs.cmake:118`) and are left for a\nfollow-up.\n\nNo test: configure-time logic, no test mechanism exists in `openmp/`.\n\nThis affects performance-critical applications on large AMD GPU\nsupercomputers, including [MFC](https://github.com/MFlowCode/MFC).\n\nAll numbers above come from the validated reproducers included with this\nreport and are independently reproducible; they stand on their own.\n\nThis was found and root-caused with the assistance of AI tools.\n\nGitOrigin-RevId: 2f5771c8ecc5a9edd4469e08255402436dc7dd31\n"
    },
    {
      "commit": "792effdf15d4f437d7b8bdc4620e276fd4ca12a3",
      "tree": "a8a16ed34c76cf65f2a78ccb49001c390ec3bb26",
      "parents": [
        "d6bcab78e43b71d8a55fb2c600b88430a458aa86"
      ],
      "author": {
        "name": "Brad Smith",
        "email": "brad@comstyle.com",
        "time": "Sun Jul 19 01:28:10 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat Jul 18 22:30:47 2026 -0700"
      },
      "message": "[OpenMP] Simplify GNU strerror_r check for Android (#148990)\n\nAndroid 6 is the baseline so simplify the Android check.\n\nGitOrigin-RevId: 446a84a7c66eda9b945a000ccab04948f240eaaa\n"
    },
    {
      "commit": "d6bcab78e43b71d8a55fb2c600b88430a458aa86",
      "tree": "896592257a7efb35724c2186f8f3fbd15cdaf045",
      "parents": [
        "5aa6faae46af59bd1da1e6cd66460d72deee3f7e"
      ],
      "author": {
        "name": "Ulrich Weigand",
        "email": "ulrich.weigand@de.ibm.com",
        "time": "Wed Jul 15 18:59:52 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jul 15 10:06:02 2026 -0700"
      },
      "message": "[OpenMP] Fix endian bug in hierarchical barrier code (#117073)\n\nThe \"oncore\" flavor of the hierarchical barrier code uses a single\nuint64 to hold both a barrier state *and* a set of flags for the current\nnode\u0027s \"leaf kids\" in the tree.\n\nTo make this work, the barrier state is placed in the least-significant\nbyte of the uint64, and the flags for leaf kids are placed in other\nbytes of the uint64 starting from the most-significant byte to represent\nthe first child.\n\nAt least, this is how it works on little-endian systems. On big-endian\nhosts, the current code unfortunately places the leaf kid flags starting\nfrom the *least* significant byte of the uint64, where they will overlap\nand clobber the barrier state byte, resulting in corrupted barrier\nbehavior.\n\nTo fix this, this PR changes the child flag offsets to always start with\nthe MSB, on both big- and little- endian hosts. This was complicated a\nbit by the following issues:\n\n- The byte offset was stored \"off-by-one\" for some reason. This makes it\nimpossible to represent the MSB on big- endian systems (i.e. byte 0,\nwhich would have to be represented by -1 if offset by one, which does\nnot fit into the uint8 offset field).\n\nFixed by storing and using the \"offset\" field as the actual byte number,\nnot off-by-one.\n\n- The \"offset\" field was never used for the master node, but it was\nstill computed. That computed value was also invalid as it pointed\noutside the target uint64, but that didn\u0027t matter as it was unused. For\nbig-endian systems, however, the computation would have resulted in a\n*negative* value, which again cannot be stored in the uint8 field.\n\nFixed by skipping the (unused) computation on the master node and\nsetting the \"offset\" field to a dummy value.\n\nThis is intended to be NFC on little-endian machines.\n\nGitOrigin-RevId: 547e9d0c9175f37c9ddd367bbe443a2fd7d6ab7a\n"
    },
    {
      "commit": "5aa6faae46af59bd1da1e6cd66460d72deee3f7e",
      "tree": "46cad5b1ccefb23d4dfaec8dd7ec9290443d0328",
      "parents": [
        "af09160bccfeb7f3e8c64f823e53ace855500ccd"
      ],
      "author": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Tue Jul 14 09:18:39 2026 +0300"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Jul 13 23:20:27 2026 -0700"
      },
      "message": "[openmp] Apply a mingw/64 bit codepath to arm64ec too (#209297)\n\nWhen targeting arm64ec, neither KMP_ARCH_X86_64 nor KMP_ARCH_AARCH64 is\ndefined.\n\nThis fixes a compilation warning when building openmp for mingw/arm64ec.\n\nGitOrigin-RevId: 8eb6e260047bd2f69d9d2c1f0967ae59f7ec5374\n"
    },
    {
      "commit": "af09160bccfeb7f3e8c64f823e53ace855500ccd",
      "tree": "b1e7f8764a997790bfdf0100b41506d51cff2152",
      "parents": [
        "a9e963a5f4690ff3cc3a62fe6eb6a2073c1c579f"
      ],
      "author": {
        "name": "Abid Qadeer",
        "email": "haqadeer@amd.com",
        "time": "Mon Jul 13 09:57:52 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Jul 13 02:00:16 2026 -0700"
      },
      "message": "[OpenMP] Publish target-init team state with acq_rel barrier (#208701)\n\nIn __kmpc_target_init, thread 0 initializes the team state in LDS\n(HasThreadState \u003d 0, ThreadStates \u003d nullptr) and then releases the other\nthreads with synchronize::threadsAligned(atomic::relaxed). Because the\nrelaxed ordering emits no memory fence, the initializing LDS stores are\nnot guaranteed to be visible to the worker threads before they proceed.\nA worker thread can then read the uninitialized team state and produce\nwrong results or crash. This is the flow that causes the race as I\nunderstand it.\n\n```\n__kmpc_target_init                                    (Kernel.cpp:107)\n  -\u003e initializeRuntime                                (Kernel.cpp:38)\n       -\u003e state::init                                         (State.cpp:286)\n            -\u003e TeamState.init(IsSPMD)                 (State.cpp:295)\n                 -\u003e HasThreadState \u003d false            (State.cpp:248)   // \u003c-- the value later read stale\n               ThreadStates \u003d nullptr                 (State.cpp:296)\n  -\u003e synchronize::threadsAligned(atomic::relaxed)     (Kernel.cpp:115)  // \u003c-- insufficient barrier:\n     //     relaxed emits no fence, so the state stores above are not published to the other threads\n\n        ... worker threads continue past the barrier ...\n\n__kmpc_parallel_60                                    (Parallelism.cpp:143)\n  if (OMP_UNLIKELY(!if_expr || state::HasThreadState || ...))   (Parallelism.cpp:158)\n        ^ reads HasThreadState from LDS; a stale/unpublished value (!\u003d 0)\n          diverts the worker onto the wrong (serialized) path\n```\nThe fix changes the barrier at Kernel.cpp:115 from atomic::relaxed to\natomic::acq_rel so that the memory fences are emitted.\n\nReproducing the problem requires an `if` clause with a non-constant\ncondition on the target region. The worker\u0027s read of HasThreadState\noriginates from the serialized-region check in __kmpc_parallel_60. When\nthe `if` condition is constant (or absent), the optimizer can prove that\nbranch is dead and eliminates the HasThreadState load entirely, so the\nrace has nothing to observe. A non-constant `if` keeps if_expr, and\nhence the LDS read alive, exposing the problem.\n\nI have added a Fortran offload regression test that launches a target\nregion many times to make the timing-dependent race likely to surface.\n\nFixes https://github.com/llvm/llvm-project/issues/208698.\n\nAssisted-by: Cursor\nGitOrigin-RevId: abd72b0eb7807a98c261a6cac35a969f954a76cd\n"
    },
    {
      "commit": "a9e963a5f4690ff3cc3a62fe6eb6a2073c1c579f",
      "tree": "585ad7a92658678514b6dcd719799aba31eb49a4",
      "parents": [
        "0471006b22d0e2ab34b64514a86fb613ef4f3676"
      ],
      "author": {
        "name": "Kewen Meng",
        "email": "Kewen.Meng@amd.com",
        "time": "Fri Jul 10 11:38:16 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jul 10 11:40:47 2026 -0700"
      },
      "message": "[OpenMP][Offload][AMDGPU] Fix offload tests failure after the new triple (#208617)\n\nOffload tests failed after introducing the new triple. This PR attempts\nto address that. It includes the changes in\nhttps://github.com/llvm/llvm-project/pull/208551. In addition, it also\nmade following changes:\n\n- Updated flang builder that our buildbot uses;\n- Updated the CMakeLists for offload and AMDGPU device runtime (a little\nduplications to avoid breaking other buildbots);\n- Added per target linker path and mapping for lit substitution/features\nin lit config;\n- Updated hard-coded check lines in the tests.\n\nThis PR reduces the failed offload tests from 246 to 2 on my test runs\nlocally. Test results and the two failed tests:\n```\nFailed Tests (2):\n   libomptarget :: amdgpu-amd-amdhsa :: offloading/fortran/declare-target-common-block-main.f90\n   libomptarget :: amdgpu-amd-amdhsa :: sanitizer/use_after_free_2.c\n\n Total Discovered Tests: 3478\n   Skipped          :   77 (2.21%)\n   Unsupported      :  341 (9.80%)\n   Passed           : 3053 (87.78%)\n   Expectedly Failed:    5 (0.14%)\n   Failed           :    2 (0.06%)\n```\n\nI was not able to identify the commits for the two failed tests yet\n(didn\u0027t look like flakiness), will try again later.\n\nCo-authored-by: Jan Patrick Lehr \u003cJanPatrick.Lehr@amd.com\u003e\nGitOrigin-RevId: 71fe35814f4b4b5dc88b9caa65f44da5da946df8\n"
    },
    {
      "commit": "0471006b22d0e2ab34b64514a86fb613ef4f3676",
      "tree": "d0d52b598a546037a94ab7dfac080118ffa5d28a",
      "parents": [
        "6b3d4e92871da911d4a3b8fba2e690e2efc10382"
      ],
      "author": {
        "name": "Jan Patrick Lehr",
        "email": "JanPatrick.Lehr@amd.com",
        "time": "Fri Jul 10 13:25:21 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jul 10 04:30:34 2026 -0700"
      },
      "message": "[OpenMP] Use secure_getenv when read OMPT library path (#208652)\n\nAn internal review flagged the use of `getenv` when reading the OMPT\ntool library path from the environment and passing it to the loader as a\npotential vuln.\n\nThis patch replaces the use of getenv in question with the use of\nsecure_getenv on glibc platforms.\nOn non glibc platforms, no change is implemented.\n\nGitOrigin-RevId: 7fcfcf1c5db1d46b6cc85b80be3a24ee887773f9\n"
    },
    {
      "commit": "6b3d4e92871da911d4a3b8fba2e690e2efc10382",
      "tree": "db0563e1c1717d4ef64db04674d66470e8c1fb0e",
      "parents": [
        "54d41314f91cc0e700864e3f8df973cdf60b20dd"
      ],
      "author": {
        "name": "Aditya Medhane",
        "email": "sherlockedaditya@gmail.com",
        "time": "Tue Jul 07 21:11:34 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jul 07 08:45:37 2026 -0700"
      },
      "message": "[OpenMP] Remove internal linkage from __kmp_wait template (NFC) (#207983)\n\n__kmp_wait in kmp_dispatch.h is a static function template in a header,\nso any TU that includes it without instantiating it trips\n-Wunused-template (kmp_runtime.cpp, kmp_affinity.cpp, kmp_global.cpp,\nkmp_settings.cpp). It is used by kmp_dispatch.cpp and\nkmp_dispatch_hier.h. Drop static, which the comment above it already\nsuggests.\n\nPart of #202945\n\nGitOrigin-RevId: 29f1a71a8d3f12232ccd53bca2442e35396a11a3\n"
    },
    {
      "commit": "54d41314f91cc0e700864e3f8df973cdf60b20dd",
      "tree": "20e122dcb21b89e96a6b803e71454d159f39719b",
      "parents": [
        "1dc86174098f16458bf191b985b9e443f97c33d8"
      ],
      "author": {
        "name": "David Truby",
        "email": "david.truby@arm.com",
        "time": "Tue Jul 07 13:45:15 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jul 07 05:47:41 2026 -0700"
      },
      "message": "[openmp][arm64ec] Fix arm64x when PER_TARGET_RUNTIME_DIR\u003dOn (#207747)\n\nThis patch fixes an issue where the combination of LIBOMP_ENABLE_ARM64X\nand LLVM_PER_TARGET_RUNTIME_DIR\u003dOn led to only the arm64 library being\ninstalled. With this fix, the arm64ec and arm64 .lib files are both\ninstalled, and the arm64x dll is the one installed to the binary dir.\n\nGitOrigin-RevId: 0d9f3f41d6a45e0673c04a01e64d24a76ccffe60\n"
    },
    {
      "commit": "1dc86174098f16458bf191b985b9e443f97c33d8",
      "tree": "579ceaaf97dee335ff734868942bbd616d112743",
      "parents": [
        "41e044ce95ba13459dc429c58b5cc454f3c0f676"
      ],
      "author": {
        "name": "Jan André Reuter",
        "email": "jan@zyten.de",
        "time": "Wed Jul 01 16:20:49 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jul 01 07:25:19 2026 -0700"
      },
      "message": "[OpenMP][OMPT] Map `ompt_get_num_devices` to runtime function (#200790)\n\nSince 82e94a593433f36734e2d34898d353a2ecb65b8b, `ompt_get_num_devices`\nwas hard coded to always provide a return value of `1`, regardless of\nthe actual number of devices. Tools relying on this return value were\nhenced forced to use other approaches to estimate the number of\navailable devices.\n\nTo improve the situtation, map the returned value to the one provided by\n`omp_get_num_devices()`. This does not resolve the issue completely\nthough. When OMPT is initialized through `libomptarget.so`, the\nPluginManager, providing the number of devices, is not initialized until\nafter OMPT has been fully set up. This means that tools, trying to\nretrieve the number of devices during the _initialize_ callback, will\nstill receive the incorrect number of devices.\n\nStill, this is a significant improvement compared to the prior state\nwhich provided an incorrect result for most of the program runtime.\n\nCloses #196829\n\n---------\n\nSigned-off-by: Jan André Reuter \u003cj.reuter@fz-juelich.de\u003e\nGitOrigin-RevId: c9ae1305b08161a626a9c7267350bd36b01f2393\n"
    },
    {
      "commit": "41e044ce95ba13459dc429c58b5cc454f3c0f676",
      "tree": "836722eb32f900129b07054ee37d1756eb264a0c",
      "parents": [
        "79a0a58822ae8942ea758265396d1d486e3b2130"
      ],
      "author": {
        "name": "Deepak Eachempati",
        "email": "deepak.eachempati@hpe.com",
        "time": "Tue Jun 30 09:50:16 2026 -0600"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jun 30 08:56:23 2026 -0700"
      },
      "message": "[flang][OpenMP] add Flang OpenMP Support page (NFC) (#205833)\n\nThis adds a dedicated Flang OpenMP Support page for tracking OpenMP\nfeature support that entails modifications to Flang compiler components.\nThe expectation is that all other OpenMP feature work will continue to\nbe tracked under the Clang OpenMP support page.\n\nTables are added for each released OpenMP version since 4.0, and an\nadditional for the next future release. A Notes column describes current\nstatus, and a separate column is added for a developer to record that\nthey are working on a given feature.\n\nGitOrigin-RevId: 6d8e36361da33f1c86e64bddb07f94f0da6c5d7f\n"
    },
    {
      "commit": "79a0a58822ae8942ea758265396d1d486e3b2130",
      "tree": "712a45ce551990ce772dbf489a9647e8cbb3c976",
      "parents": [
        "cbb535382fc0ed38930cc49366522fe40fea5642"
      ],
      "author": {
        "name": "Xing Xue",
        "email": "xingxue@outlook.com",
        "time": "Tue Jun 30 07:00:44 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jun 30 04:05:32 2026 -0700"
      },
      "message": "[libomp][AIX] Rename libatomic to libcompiler_rt (#203594)\n\nThis change updates the reference from `libatomic` to `libcompiler_rt`\nto match the recent renaming on AIX.\n\nGitOrigin-RevId: c0557795224eb4d664148d9f9c2c90bfb474dd50\n"
    },
    {
      "commit": "cbb535382fc0ed38930cc49366522fe40fea5642",
      "tree": "ae61df31a8c4c3e27f97a153ac6f232f96082157",
      "parents": [
        "9dc4282a7df117c12bbd4672c175f6c2b6b6c31d"
      ],
      "author": {
        "name": "Petr Hosek",
        "email": "phosek@google.com",
        "time": "Mon Jun 29 11:16:27 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Jun 29 11:20:40 2026 -0700"
      },
      "message": "[CMake] Warn when the version of CMake is older than 3.31.0 (#204203)\n\nThis is a preparation to raise the minimum required CMake version to\n3.31.0 in LLVM 24.\n\nSee\nhttps://discourse.llvm.org/t/rfc-raising-minimum-required-cmake-version-to-3-31/91086.\n\nGitOrigin-RevId: e192ec42b426f6ffbc25419238a90f3c59088587\n"
    },
    {
      "commit": "9dc4282a7df117c12bbd4672c175f6c2b6b6c31d",
      "tree": "475549b01bd13a5196b609beb1654b3537a5738e",
      "parents": [
        "257c44a456a7d068ec62df8017115eed1504264f"
      ],
      "author": {
        "name": "Robert Imschweiler",
        "email": "robert.imschweiler@amd.com",
        "time": "Thu Jun 25 21:06:47 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jun 25 12:10:43 2026 -0700"
      },
      "message": "[offload][OpenMP] Fix partial warp reduction (#205861)\n\nDon\u0027t use a full warp for the final cross-team reduction if the\nreduction\u0027s thread limit is below the warp size.\n\nClaude assisted with the test.\n\nGitOrigin-RevId: 336aa499241da677ba5dadf055ae3b4b5affba03\n"
    },
    {
      "commit": "257c44a456a7d068ec62df8017115eed1504264f",
      "tree": "1f6746f9a05004f0de994bb082423f502bc0ba90",
      "parents": [
        "3a42d5995b3b3c5f4f8f2982ae37d98defb2c19e"
      ],
      "author": {
        "name": "Michael Kruse",
        "email": "llvm-project@meinersbur.de",
        "time": "Thu Jun 25 16:50:13 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jun 25 07:55:24 2026 -0700"
      },
      "message": "[flang-rt][CMake] Avoid \u0027use, intrinsic ::\u0027 (#205634)\n\nTwo build failures reported after #204260\n\n* Unix Makefiles generator stops working: The cause is that the rules\nfor building each OBJECT library lands in its own Makefile, e.g.\n`flang_rt.mod.fortran.builtins.dir/build.make` and\n`libomp-mod.dir/build.make`. Trying to inject dependencies directly for\nbuild rules in the other file does not work.\n\n* `__ppc_types.f90` not tracked: Forgotten in #204260 due to being only\nconditionally enabled for PowerPC targets.\n\nThe solution for both is to just remove the workaround for CMake not\nrecognizing modules uses declared using `intrinsic` which caused these\nproblems. This PR promotes the `use` constructs in the module sources to\nnormal dependencies that are not ignored by CMake.\n\nThe `intrinsic` modifier changes the search path to only look for such a\nmodule in `-fintrinsic-modules-path`. The difference is only\ntheoretical:\n1. When compiling the intrinsic modules, there are no other search paths\nthan for the intrinsics anyway\n2. Users should strongly avoid naming their modules the same as an\nintrinsic module\n3. Most of our intrinsic sources don\u0027t even use the `intrinsic` modifier\nin the first place (e.g.\nhttps://github.com/llvm/llvm-project/blob/1c9412432ff9f897d5fb096d31b945e50fbbb61d/flang-rt/lib/runtime/__cuda_builtins.f90#L13).\nThat is, if there was a problem with lookup ambiguity, these would have\nalready been a problem for those.\n4. The checksum of used modules is only added into the .mod file (the\nonly reason why modules would need to be transitively rebuilt) when a\n`use` statement appears. Many intrinsic modules don\u0027t explicitly use the\nmodules that are added implicitly by the compiler, such as\n`__fortran_builtins`, and hence do not even need to be rebuilt.\n\nI started this PR with a tested-working fix\n([71c5e7f0ffcf2ebd58812d2e2812b22663be1631](https://github.com/llvm/llvm-project/pull/205634/changes/BASE..71c5e7f0ffcf2ebd58812d2e2812b22663be1631))\nto the workaround code. But given the points above, there seems to be no\nbenefit of keeping the workaround code handling CMake version \u003c 4.5\naround just for some intrinsic modules to keep the `intrinsic` modifier\nwith no practical effect. A non-workaround path using CMake\u0027s\n`Fortran_BUILDING_IN(S)TRINSIC_MODULES` setting had to be added in any\ncase for Unix Makefile generators (reported issue 1.) because injecting\ndependencies is not possible with Unix Makefiles as stated, but\n`Fortran_BUILDING_IN(S)TRINSIC_MODULES` also does not work with the\nNinja generator. Avoiding `use, intrinsic` keeps just one configuration\npath.\n\nI tested that modules are properly updated with Ninja and Unix\nMakefiles:\n * Build from scratch\n * Modifying `__fortran_builtins.f90` rebuilds its dependent modules\n * Modifying `iso_c_binding.f90` rebuilds its dependent modules\n(omp_lib.mod)\nGitOrigin-RevId: c1869ffacf2b756913b45468aa58e7c8828112c4\n"
    },
    {
      "commit": "3a42d5995b3b3c5f4f8f2982ae37d98defb2c19e",
      "tree": "afcfcb96c1966182c9c433abd3c7b64ea1d82b96",
      "parents": [
        "48dd9ff520ce53c887f2f0fbfef193803361017a"
      ],
      "author": {
        "name": "Scott Linder",
        "email": "scott.linder@amd.com",
        "time": "Wed Jun 24 15:12:48 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jun 24 12:16:41 2026 -0700"
      },
      "message": "[docs] Create utils/docs (#203962)\n\nllvm-project is home to many sphinx documentation sites, each with\nconfiguration quirks and bespoke extensions.\n\nThe sphinx config model makes sharing code somewhat difficult. There\nare options like sphinx-multiproject, but some of our docs builds are\nout of the source tree while some are done out of the binary tree, so\nthe multiproject configuration itself would need to be generated. It\nalso would impose more uniformity around extensions than required.\n\nThis change instead creates a python package at utils/docs/llvm_sphinx\nand makes it available to all sphinx-build processes via PYTHONPATH.\nEach conf.py does not modify its own sys.path because not all builds are\nout of the source tree, so there isn\u0027t a stable relative path to use to\nrefer to the utils/docs/ directory.\n\nType checking via pyright in new package is pinned to being python 3.8\ncompatible.\n\nThe myst slug script from llvm/docs is promoted to be the default,\nwith a slight edit to targets needed in FlangDriver.md to adapt to the\nchange.\n\nThe ghlinks extension from clang gets lifted to be the first generic\nextension, although it is still only used in clang currently. I used it\nas an example of a general extension that might be useful for other\nprojects, but I also intend to add a new generic extension in a future\npatch.\n\nAs part of the move ghlinks is refactored a bit:\n\n* Rather than have a main function directly to run its tests, those\n  tests are now run via the command-line entrypoint to the new package,\n  e.g. `python utils/docs --test` will now replace\n  `python clang/docs/ghlinks.py --test`. This makes the command-line\n  more pithy (`python utils/docs/llvm_sphinx/ext/ghlinks --test` is a\n  bit long), and makes the default behavior when running be to\n  include utils/docs in the sys.path, so imports can be absolute and\n  the behavior is as close to the CMake targets as possible.\n* The static files that were previously written to a tempdir during\n  testing are just committed directly in git. The assumption here is\n  that the original version was taking pains to avoid polluting the\n  clang/docs directory with test files that would confuse sphinx-build,\n  and without that limitation the workaround can be removed.\n* Some typing-related changes to make it strictly python 3.8 compatible.\n\nChange-Id: Ie16de273f74973f163dbf7fe9d22d80a466d051f\nGitOrigin-RevId: 42ff45b865b1744e3f37a821bbcbc3d2ece1513c\n"
    },
    {
      "commit": "48dd9ff520ce53c887f2f0fbfef193803361017a",
      "tree": "c25242bba4f2b44cb7a036f799209595154b0561",
      "parents": [
        "d5498c7d4479f8f2b8012f99d4144c916f165b92"
      ],
      "author": {
        "name": "Michael Kruse",
        "email": "llvm-project@meinersbur.de",
        "time": "Mon Jun 22 18:12:37 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Jun 22 09:15:37 2026 -0700"
      },
      "message": "[flang-rt][openmp] Add file-level dependencies for builtin mod files (#204260)\n\nCMake currently intentionally ignores intrinsic dependencies. flang-rt\nalready had a workaround using target-level dependencies, but it does\nnot know about dependencies between .mod files created within the same\nadd_library that CMake ignores. As a result, as reported in #203549,\nupdating a .mod did not trigger rebuilding the .mod files that depend on\nit. Specifically, .mod files store the checksum of used .mod files which\nneed to be updated and therefore require transitive rebuidling.\n\nAs mentioned, CMake already adds this file-level dependency itself for\nnon-intrinsic modules dependencies. In this PR we are injecting the\nadditional dependencies that CMake does not add via OBJECT_DEPENDS.\n\nThree caveats:\n\n1. Using OBJECT_DEPENDS for dependencies between modules of the same\nOBJECT library makes Ninja complain about circular dependencies. To\navoid, split __fortran_builtins.f90 and __cuda_builtins.f90 into their\nown OBJECT libraries each.\n\n2. The dependency cannot be on the .mod files. Because of how CMake\u0027s\ndependency mechanism works, the dependency scanning runs only after\nensuring that the OBJECT_DEPENDS files exist. So if they don\u0027t exist\nyet, we get a missing dependency error. To avoid, we depend on the .o\nfile instead.\n\n3. Generator expressions do not work in OBJECT_DEPENDS. That is, we\ncannot use `$\u003cTARGET_FILES:flang_rt.mod.fortran.builtins\u003e`, but\nfortunately we can use OBJECT_OUTPUTS to make the location predictable.\n\nAt some point in the future,\nhttps://gitlab.kitware.com/cmake/cmake/-/issues/26803 should be resolved\nand become the minimum required version to build LLVM, in which case\nthese workarounds can be removed.\n\nGitOrigin-RevId: a92039c3e44e102f90751c8e8b2ab70a077016b7\n"
    },
    {
      "commit": "d5498c7d4479f8f2b8012f99d4144c916f165b92",
      "tree": "61de5793d59c662849c64a8971481f7cb25e3257",
      "parents": [
        "0f036a56124986a9dae221400c67b193dd178752"
      ],
      "author": {
        "name": "Robert Imschweiler",
        "email": "robert.imschweiler@amd.com",
        "time": "Mon Jun 22 17:40:45 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Jun 22 08:45:57 2026 -0700"
      },
      "message": "Reapply \"[OpenMP][offload] Cross-team reductions with variable number of teams\" (#204914) (#205071)\n\nTogether with the fix for\nhttps://github.com/llvm/llvm-project/pull/195102#issuecomment-4756584289\n\nGitOrigin-RevId: 132e019c1f8f485c764b22670b5ea7ff2d8556a8\n"
    },
    {
      "commit": "0f036a56124986a9dae221400c67b193dd178752",
      "tree": "1a72809b5a970a25f95d52599ea35af8a7c811f8",
      "parents": [
        "7744b12b13bef05c4a41024278ce5b6dd8631893"
      ],
      "author": {
        "name": "Robert Imschweiler",
        "email": "robert.imschweiler@amd.com",
        "time": "Sat Jun 20 08:28:22 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jun 19 23:30:43 2026 -0700"
      },
      "message": "Revert \"[OpenMP][offload] Cross-team reductions with variable number of teams\" (#204914)\n\nReverts llvm/llvm-project#195102 due to some missed debug info issue\nrevealed by https://lab.llvm.org/buildbot/#/builders/67/builds/7022\n\nGitOrigin-RevId: 4c16440e1edc00cd1b5a64944fc651064fe6425b\n"
    },
    {
      "commit": "7744b12b13bef05c4a41024278ce5b6dd8631893",
      "tree": "61de5793d59c662849c64a8971481f7cb25e3257",
      "parents": [
        "c0de91650cdfe04ca0c3cb907e05539b752130f8"
      ],
      "author": {
        "name": "Robert Imschweiler",
        "email": "robert.imschweiler@amd.com",
        "time": "Sat Jun 20 07:12:30 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jun 19 22:15:42 2026 -0700"
      },
      "message": "[OpenMP][offload] Cross-team reductions with variable number of teams (#195102)\n\nThis is a part of a series of patches that rework OpenMP cross-team\nreductions.\n\nThis patch changes the cross-team reduction runtime to no longer work\nthrough larger number of teams in chunks. Instead, we allocate a\nsuitable-sized global buffer for the team values and let all teams run\nat once. The last team that finishes uses a strided loop to reduce the\nteam values from the global buffer.\n\nWe also use `mapping::getNumberOfThreadsInBlock()` instead of\n`omp_get_num_threads()` because the reduction of the team values runs\noutside of the parallel region device code, which would make\n`omp_get_num_threads()` always return 1. For Generic-SPMD mode, we also\nwant to use all available threads, which means that we need to copy the\nreduction data from LDS (where it lives in that mode by default) to\nscratch in codegen before calling the cross-team reduction.\n\nPerformance:\nAll performance tests can be reproduced with\nhttps://github.com/ro-i/xteam-test @ commit\n2f09ae1f566f13189d20b414d8b83bf2986564d2. To reproduce, simply create a\n`local.mk` file in the cloned directory with a suitable `OFFLOAD_ARCH`\nfor your machine and `CXX_trunk` + `CXX_trunk_dev` set to the paths of\nthe clang++ binaries for llvm/main and this patch. (llvm/main should\nbest be at the commit that is currently the base for this PR. At the\nmoment, this is fe87c971bf07eb38af97ca96bf2810e94e7549dc). Then, run\n`make trunk trunk_dev` to build the benchmark binaries for 208 and 10400\nteams. Run them with `./run_bench.sh -rq -n10 red_trunk_208\nred_trunk_dev_208 red_trunk_10400 red_trunk_dev_10400` to get the avg\nperformance numbers over 10 rounds.\nThis tests multiple reduction workloads, including reductions that run\nin the Generic-SPMD mode, with 208 teams and with 10400 teams, both à\n512 threads, and with a reduction array size of 177,777,777. I tested on\na gfx942 and didn\u0027t find any regressions - here are some numbers showing\nthe performance of this patch relative to the baseline:\n```\nred_comb_sep_arr_32    double   dev_208:   +84.37%   dev_10400:   +54.06%\nred_sum_arr_32         double   dev_208:    +9.72%   dev_10400:   +51.29%\nred_comb               double   dev_208:    +2.73%   dev_10400:    +8.73%\nred_comb_sep           double   dev_208:    +1.89%   dev_10400:   +87.13%\nred_dot                double   dev_208:    +1.46%   dev_10400:   +25.66%\nred_indirect           double   dev_208:    +1.51%   dev_10400:   +23.54%\nred_kernel_part        double   dev_208:    +1.27%   dev_10400:   +88.28%\nred_max                double   dev_208:    +1.29%   dev_10400:   +22.69%\nred_mult               double   dev_208:    +1.96%   dev_10400:   +22.02%\nred_sum                double   dev_208:    +2.03%   dev_10400:   +22.00%\nred_pi                 double   dev_208:    +1.08%   dev_10400:    +1.22%\nred_comb_sep_arr_32    uint     dev_208:  +139.10%   dev_10400:   +88.02%\nred_sum_arr_32         uint     dev_208:   +49.70%   dev_10400:  +143.24%\nred_dot                uint     dev_208:    +0.77%   dev_10400:   +24.91%\nred_max                uint     dev_208:    +3.43%   dev_10400:   +36.61%\nred_sum                uint     dev_208:    +4.56%   dev_10400:   +36.95%\nred_comb_sep_arr_32    ulong    dev_208:   +85.22%   dev_10400:   +58.17%\nred_sum_arr_32         ulong    dev_208:    +9.01%   dev_10400:   +55.14%\nred_dot                ulong    dev_208:    +2.94%   dev_10400:   +26.89%\nred_max                ulong    dev_208:    +2.83%   dev_10400:   +23.10%\nred_sum                ulong    dev_208:    +1.59%   dev_10400:   +22.82%\nred_comb_sep_arr_32    Value    dev_208:   +29.88%   dev_10400:   +24.17%\nred_sum_arr_32         Value    dev_208:    +7.26%   dev_10400:   +38.14%\nred_dot                Value    dev_208:    +2.65%   dev_10400:    +8.60%\nred_max                Value    dev_208:    +2.86%   dev_10400:    +4.77%\nred_sum                Value    dev_208:    +0.47%   dev_10400:   +10.22%\n```\n\nThis patch uses ideas from Johannes Doerfert, ideas from the AOMP\ncross-team reduction implementation, and was assisted by Claude.\n\nGitOrigin-RevId: e9acb01904be7c32e98dedee27b68f939d79549a\n"
    },
    {
      "commit": "c0de91650cdfe04ca0c3cb907e05539b752130f8",
      "tree": "1a72809b5a970a25f95d52599ea35af8a7c811f8",
      "parents": [
        "4b3d96ed702a84f33dd67400b7a65e46813e285f"
      ],
      "author": {
        "name": "Kevin Sala Penades",
        "email": "salapenades1@llnl.gov",
        "time": "Thu Jun 18 21:57:23 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jun 18 22:00:58 2026 -0700"
      },
      "message": "[offload] Improve report printing for kernel recording (#204505)\n\nThis commit extends the record reporting mechanism:\n- `LIBOMPTARGET_RECORD_REPORT_FILENAME` enables the reporting mechanism\nand allows specifying the name of the output file.\n- The report of recorded kernels are ordered in recording order. This is\nreally useful for tests that need to record and replay more than one\nkernel.\n\nGitOrigin-RevId: 79349e509ab569636647829945e20a6f244d6c36\n"
    },
    {
      "commit": "4b3d96ed702a84f33dd67400b7a65e46813e285f",
      "tree": "fb1df903cf8dbcfd4f2b805305b638be42157520",
      "parents": [
        "308b36b5bb9363b502bf6cfee297aed0a2400040"
      ],
      "author": {
        "name": "Mark Zhuang",
        "email": "mark.zhuang@spacemit.com",
        "time": "Thu Jun 18 11:04:01 2026 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jun 18 09:05:33 2026 -0700"
      },
      "message": "[OpenMP] Control KMP_CANCEL_THREADS via CMake and detect pthread_cancel (#193681)\n\nKMP_CANCEL_THREADS was a preprocessor switch in kmp.h, with Android and\nWASI explicitly #undef-ing it. Move the control to CMake:\n\n- Detect pthread_cancel via check_symbol_exists()\n- Drive KMP_CANCEL_THREADS from that result, emitted as a 0/1 #define in\nkmp_config.h.cmake (overridable with -DLIBOMP_USE_CANCEL_THREADS\u003dOFF).\n- Drop the Android/WASM special-casing\n\nGitOrigin-RevId: d81069d7c3da46ea7bd000c3d6ab618e3db79bd4\n"
    },
    {
      "commit": "308b36b5bb9363b502bf6cfee297aed0a2400040",
      "tree": "fd90c9048c7914df86087b37f412407f2bd71231",
      "parents": [
        "57eaefc0f2ef19f22891ebf1afe878f395c6c870"
      ],
      "author": {
        "name": "Mark Zhuang",
        "email": "mark.zhuang@spacemit.com",
        "time": "Thu Jun 18 11:03:07 2026 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jun 18 09:05:25 2026 -0700"
      },
      "message": "[OpenMP] Improve dladdr error handling in ompd_init() (#201043)\n\nGuard dlerror() result against NULL before passing to fprintf to avoid\nconfusing \"(null)\" output. Also guard dli_fname against NULL on the\nsuccess path before calling strrchr.\n\nAssisted-by: Claude Sonnet 4.6\nGitOrigin-RevId: 74a146dd9c28c083db057d7f87afbcc617319392\n"
    },
    {
      "commit": "57eaefc0f2ef19f22891ebf1afe878f395c6c870",
      "tree": "d9f0d91df820b444dd2f6ef55d77b4ec26bda61a",
      "parents": [
        "a2b6ef5e0f181ab60ff9e9bd4f780a3a0af59413"
      ],
      "author": {
        "name": "Robert Imschweiler",
        "email": "robert.imschweiler@amd.com",
        "time": "Thu Jun 18 08:11:35 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jun 17 23:13:42 2026 -0700"
      },
      "message": "[libomp] Add kmp_vector (ADT 2/2) (#176163)\n\nSee rationale in the commit adding kmp_str_ref.\n\nThis commit introduces kmp_vector, a class intended primarily for small\nvectors. It currently only includes methods I need at the moment, but\nit\u0027s easily extensible.\n\nGitOrigin-RevId: d5194e2514533067c5a7a7c2e7af33b112e3aad5\n"
    },
    {
      "commit": "a2b6ef5e0f181ab60ff9e9bd4f780a3a0af59413",
      "tree": "d73fec70e2bab17bf176c9a6cd00ca5c64e7869e",
      "parents": [
        "483aaf2dfa4fffbc0e70fc81ac97a80eff84cb2b"
      ],
      "author": {
        "name": "Robert Imschweiler",
        "email": "robert.imschweiler@amd.com",
        "time": "Mon Jun 15 17:20:56 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Jun 15 08:26:18 2026 -0700"
      },
      "message": "[libomp] Add kmp_str_ref (ADT 1/2) (#176162)\n\nlibomp currently has two limitations:\n1) although it\u0027s C++, it doesn\u0027t link against the C++ stdlib 2) it\ncannot link against the implementation of LLVM ADTs\n\nThese limitations shall not be altered at the moment.\n\nAs a result, this commit introduces kmp_str_ref, which is similar to\nLLVM\u0027s StringRef. It currently only includes methods I need at the\nmoment, but it\u0027s easily extensible.\n\nGitOrigin-RevId: 2d8a394129b3b538071f7774e34c31d7cbf3c882\n"
    },
    {
      "commit": "483aaf2dfa4fffbc0e70fc81ac97a80eff84cb2b",
      "tree": "d8d533d1da26cfbe49b54bf2e8269a842965a5ad",
      "parents": [
        "8b16725d704bba92b22dd72b60e39395cc35f561"
      ],
      "author": {
        "name": "Michael Kruse",
        "email": "llvm-project@meinersbur.de",
        "time": "Fri Jun 12 13:27:46 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Jun 15 08:26:08 2026 -0700"
      },
      "message": "[openmp] Fix export file paths (#202692)\n\nThe files omp_lib.h and omp-tools.h are the outputs of two\nconfigure_file invocations which specify the full path of the outputs.\nUse these full paths in LibompExports.cmake so they can actually be\nfound.\n\nGitOrigin-RevId: 23d906e24b06f27749c84229e4a3043b7e63a2d5\n"
    },
    {
      "commit": "8b16725d704bba92b22dd72b60e39395cc35f561",
      "tree": "e964317efd50e00380c15ce8ba990b8ce5ca95be",
      "parents": [
        "21df68569d0547ff4b7ca7b19307c466a7a9aa9a"
      ],
      "author": {
        "name": "Jameson Nash",
        "email": "vtjnash@gmail.com",
        "time": "Thu Jun 11 08:58:36 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jun 11 06:00:56 2026 -0700"
      },
      "message": "[docs] try again to handle doxygen everywhere (#203081)\n\nThe previous attempt at this (b7da9565017e32c18b927a7637714d1b660b558d)\nstill broke standalone builds. Now I have locally tested standalone\nflang, runtimes (with openmp), lldb, combined builds, and the utils\nscript. Hopefully that covers everything this time, and gets everything\ninto a more consistent state (always using the HandleDoxygen script in\nthe same way, included exactly once as required by the cmake design).\n\nGitOrigin-RevId: 7daddf2b6f44960344157a0accb3963a7d87ca03\n"
    }
  ],
  "next": "21df68569d0547ff4b7ca7b19307c466a7a9aa9a"
}
