[qt/clang/llvm-project]: Summary of bulk changes made

KDE Git Services - Bulk Change <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git repository change summary for qt/clang/llvm-project
Pushed by mirror-service into branch 'upstream/users/ritter-x2a/06-17-_rfc_langref_specify_that_the_accessed_bytes_of_concurrent_atomics_must_be_either_disjoint_or_the_same'.
Changed from b64be89ff86ab4fbf03ebb389bbaf03c72d64919 to 56e13dc6b06516cad33d4c0dd389b94b517ec0e5
Acknowledgement was received that this change introduces only existing code that has been pushed to another public open source repository.

This change contains the following new commits:

Git commit 32819927e0c02662a5c8aae252997748cdc94962 by GitHub (on behalf of Florian Hahn) on 19/07/2026 at 17:46..
[VPlan] Retire LVP::hasTailFolded (NFC). (#210598)

LVP::hasTailFolded incldued an assert that hasTailFOlded matches the
VPlan version. No divergences surfaced, so remove the assert as planned.
https://invent.kde.org/qt/clang/llvm-project/-/commit/32819927e0c02662a5c8aae252997748cdc94962

Git commit dae991a55eacb4f3c3382f3cba2897ceb43e1725 by GitHub (on behalf of Justin Lebar) on 19/07/2026 at 18:19..
[AA] Use the cmpxchg merged ordering in getModRefInfo (#210545)

When a cmpxchg's address is NoAlias with the queried location,
getModRefInfo still reports sync effects if the cmpxchg is stronger than
monotonic, since an ordered operation constrains code motion around
locations it never accesses.

But a cmpxchg op has two atomic orderings, and getModRefInfo looked
only at one of them.

Change it so we check the merged ordering, i.e. the stronger of the two.
https://invent.kde.org/qt/clang/llvm-project/-/commit/dae991a55eacb4f3c3382f3cba2897ceb43e1725

Git commit ae023494fba615bb1c75292f93e4521cfe7068b5 by GitHub (on behalf of Alexey Bataev) on 19/07/2026 at 19:00..
[SLP]Add umax/umin/smax/smin as main opcodes for copyables

Added umax/umin/smax/smin intrinsics in for copyables support.

Reviewers: hiraditya, bababuck, RKSimon

Pull Request: https://github.com/llvm/llvm-project/pull/209326
https://invent.kde.org/qt/clang/llvm-project/-/commit/ae023494fba615bb1c75292f93e4521cfe7068b5

Git commit 6bcdcb39c57ea926d3082ec3ecae74bf59b4658e by GitHub (on behalf of Jonas Devlieghere) on 19/07/2026 at 20:58..
[DWARFLinker] Make synthetic type names deterministic under threading (#209553)
https://invent.kde.org/qt/clang/llvm-project/-/commit/6bcdcb39c57ea926d3082ec3ecae74bf59b4658e

Git commit 598f15297528855682dcf381575a9c14a7faabc3 by GitHub (on behalf of Florian Hahn) on 19/07/2026 at 21:51..
[ConstraintElim] Fix integer overflow when negating constraint (#210627)

Negating a coefficient (e.g. INT64_MIN) can overflow; skip adding the
inverted constraint if it wraps.

Fixes an UBSan failure for the added test.
https://invent.kde.org/qt/clang/llvm-project/-/commit/598f15297528855682dcf381575a9c14a7faabc3

Git commit 01683dbe7e2071e8cc3aa2874e623259079aa1ae by GitHub (on behalf of Lang Hames) on 19/07/2026 at 23:41..
[orc-rt] Replace RunWrapperCall with generalized Dispatch (#210591)

RunWrapperCall dispatched wrapper-function calls, but the Session also
needs to dispatch continuations for results returned by the controller.
Replace it with a generalized Dispatch mechanism (DispatchFn) that is
handed an opaque Task for each unit of work, covering both.

QueueingRunner is correspondingly simplified: it no longer knows
anything about wrapper functions and just enqueues the Task it is given.
Tests and the noDispatch helper are updated to the new interface.
https://invent.kde.org/qt/clang/llvm-project/-/commit/01683dbe7e2071e8cc3aa2874e623259079aa1ae

Git commit 16ffd27e3737c01cbabad6eed77b919dc977ad6c by GitHub (on behalf of Petr Hosek) on 20/07/2026 at 00:47..
[libcxx][NFC] Address -Wmicrosoft-cast in MSVC's exception_ptr (#210570)

This was introduced as part of #94977. Rather than suppressing the
warning with `#pragma clang diagnostic ignored`, we use
`reinterpret_cast` to avoid the implicit conversion.
https://invent.kde.org/qt/clang/llvm-project/-/commit/16ffd27e3737c01cbabad6eed77b919dc977ad6c

Git commit c6672a6fdf1469d818d0ac8aaa2c31a0f18e729a by GitHub (on behalf of Benji Smith) on 20/07/2026 at 01:26..
[InstCombine] Fix invalid fshl -> lshr fold when shift is vector with constant zero lane (#210606)

For vectors, this is not valid if a subset of the lanes are constant
zero. Doing this fold introduces poison in those lanes. A similar fix
was done for fshr in 46957a138dea339799059ea5bf032e40042ff185 however
the same issue seems to apply to fshl

Fixes https://github.com/llvm/llvm-project/issues/210605
https://invent.kde.org/qt/clang/llvm-project/-/commit/c6672a6fdf1469d818d0ac8aaa2c31a0f18e729a

Git commit 5497f466e4fc634f91de043fc80a9cd8cc0f32a1 by GitHub (on behalf of TelGome) on 20/07/2026 at 02:35..
[RISCV][P-ext] Support Packed Narrowing Zip (#210040)
https://invent.kde.org/qt/clang/llvm-project/-/commit/5497f466e4fc634f91de043fc80a9cd8cc0f32a1

Git commit 53c6ce165aef58e1885d574c1ec597d091c3c8fc by GitHub (on behalf of Hristo Hristov) on 20/07/2026 at 02:47..
[libc++][cmp][NFC] Fix: Empty namespaces should be avoided (#210624)

Context: Including `<__utility/cmp.h>` causes:

> cmp.h:25:1: error: Empty namespaces should be avoided. Move any checks
around the namespace instead.
[libcpp-avoid-empty-namespaces,-warnings-as-errors]
https://invent.kde.org/qt/clang/llvm-project/-/commit/53c6ce165aef58e1885d574c1ec597d091c3c8fc

Git commit 8a119310dae2fd67497c8611fc3208d16a36a2c3 by GitHub (on behalf of Tony Varghese) on 20/07/2026 at 03:34..
[clang][NFC] Bump the maximum number of Frontend diagnostics (#210345)

The number of Frontend diagnostics in DiagnosticFrontendKinds.td is
close to the DIAG_SIZE_FRONTEND limit of 200 (195 in use), and in-flight
PRs adding frontend diagnostics (e.g. #187986) run into the static
assert in DiagnosticIDs.cpp. Increase the limit to 300, following the
precedent of #200948 which did the same for Sema diagnostics.

Co-authored-by: Tony Varghese <[email protected]>
https://invent.kde.org/qt/clang/llvm-project/-/commit/8a119310dae2fd67497c8611fc3208d16a36a2c3

Git commit a64f7412551ae63a49dd8617f93ab89878288879 by GitHub (on behalf of Arseniy Obolenskiy) on 20/07/2026 at 05:22..
[SPIR-V][NewPM] Register SPIRVStructurizer with the new pass manager (#209965)
https://invent.kde.org/qt/clang/llvm-project/-/commit/a64f7412551ae63a49dd8617f93ab89878288879

Git commit 9d2e7e6836beadbe63380f64c716df2c086ff2ea by GitHub (on behalf of Lukas) on 20/07/2026 at 06:39..
[FixIrreducible][UnifyLoopExits] Support switch statements (#206567)

This builds on #149308, which implemented `callbr` support.

The same approach of splitting multi-branch edges entering irreducible
loops can be used for switches. It does not introduce any new switch
statements, but alleviates the requirement of having to run the
`LowerSwitch` pass first. This makes the pass usable for users other
than AMDGPU, which can handle switch statements (e.g., WebAssembly, see
[here](https://github.com/llvm/llvm-project/pull/181755#issuecomment-3936316307)).

I'm also implementing a flag into the `ControlFlowHub` to support
switches as well, for which I will open a separate PR. Currently the
`ControlFlowHub` creates a branch-sled, mimicking a `switch` (a series
of blocks consisting only of conditional branches, selectively entering
an irreducible loop at a certain point or continuing to the next
potential entry point). If the target can support switches, that should
be the clear goal here, as shown in the image below. This PR implements
the step from (a) to (b), whereas extending the `ControlFlowHub`
represents the step from (b) to (c). ((c) to (d) already exists through
`SwitchToLookup` and `SwitchToArithmetic`).

<img width="1055" height="432" alt="image"
src="https://github.com/user-attachments/assets/780b7894-1895-4137-8148-b2bbc7f73a8f"
/>

The test cases in `switch.ll` were adapted from the `callbr.ll` tests
using an LLM to ensure equivalent coverage. I've manually reviewed the
control flow and conditions for every case, and the final assertions
were generated using `update_test_checks.py`.
https://invent.kde.org/qt/clang/llvm-project/-/commit/9d2e7e6836beadbe63380f64c716df2c086ff2ea

Git commit d8f7ce063cf04133f446e078e6f02126ac8dc79f by Fabian Ritter on 20/07/2026 at 06:41..
[RFC][LangRef] Specify that the accessed bytes of concurrent atomics must be either disjoint or the same

So far, the LangRef hasn't been clear on the semantics of partially overlapping
concurrent atomics in LLVM IR (specifically: a set of accesses marked as
`atomic` that would be in a data race if they weren't `atomic` and not all of
them access the exact same set of bytes).

What loads read is defined in terms of individual bytes, but the memory
ordering constraints are formulated closely to the C/C++ (and Java for
`unordered`) memory model, where partially overlapping atomics are not
possible. It's not obvious how concepts like C/C++'s per-location total
modification order for `monotonic` accesses map to accesses that can partially
overlap. While C/C++ relies on the modification order to ensure that atomics
cannot tear (i.e., atomic reads return bytes from two or more atomic writes),
our IR semantics (as written) currently does not guarantee this in the presence
of partially overlapping accesses.

This PR proposes a solution to this problem: It specifies that concurrent
overlapping atomics must access the exact same set of bytes to act atomically.
If they don't, they form a data race (i.e., participating loads read `undef`
for affected bytes). This empowers the rest of the specification to imply that
`monotonic` (or stronger) accesses do not tear. The PR also adds a constraint
to ensure non-tearing for `unordered` atomic accesses.

This solution implies that transformations that merge adjacent atomic
loads/stores into wider atomic loads/stores are generally incorrect.
https://invent.kde.org/qt/clang/llvm-project/-/commit/d8f7ce063cf04133f446e078e6f02126ac8dc79f

Git commit 29a08b541c739bb671757d9312658f9209ac0573 by Fabian Ritter on 20/07/2026 at 06:41..
"un-simplify" the no-tearing constraint
https://invent.kde.org/qt/clang/llvm-project/-/commit/29a08b541c739bb671757d9312658f9209ac0573

Git commit dcb93429a67e45c971a0b1b21ac1636bb33bada4 by Fabian Ritter on 20/07/2026 at 06:41..
Adapt Ralf's simpler no-tearing formulation.
https://invent.kde.org/qt/clang/llvm-project/-/commit/dcb93429a67e45c971a0b1b21ac1636bb33bada4

Git commit 222d484e6820cb4ee665f6012aeb61c83108068c by Fabian Ritter on 20/07/2026 at 06:41..
Remove vague use of "defined"
https://invent.kde.org/qt/clang/llvm-project/-/commit/222d484e6820cb4ee665f6012aeb61c83108068c

Git commit 56e13dc6b06516cad33d4c0dd389b94b517ec0e5 by Fabian Ritter on 20/07/2026 at 07:36..
Explicitly restrict the atomic ordering constraints to perfectly overlapping accesses.
https://invent.kde.org/qt/clang/llvm-project/-/commit/56e13dc6b06516cad33d4c0dd389b94b517ec0e5
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.