[qt/clang/llvm]: 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
Pushed by mirror-service into branch 'upstream/users/petar-avramovic/extendedLLT-mmo-type'.
Changed from 57a45e950fb8197c4fab55cbc5a978a97d0a471f to db8938d17a69061ecc65dd5b7ae0bc5c474760a4
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 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/-/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/-/commit/9d2e7e6836beadbe63380f64c716df2c086ff2ea

Git commit c34d2c30e86358bfe308558b5e0719e9f5305153 by GitHub (on behalf of Aayush Shrivastava) on 20/07/2026 at 06:52..
[mlir] Fix mem2reg crash on scalable vector store/load with matching type (#209426)

Fixes #209065

`createInsertAndCast/createExtractAndCast` in `LLVMMemorySlot.cpp`
queried the bit size of the source/target types before checking whether
they were already identical. For scalable vector types (e.g.
`vector<[4]xi1>`), this size query implicitly converts a scalable
TypeSize to a scalar, which aborts. `mem2reg` hits this path for any
store or load whose value type exactly matches the slot's element type,
since `getStored/removeBlockingUses` run even when no cast is needed.

This fix adds an early return when the types are already equal, skipping
the size query, consistent with the existing short-circuit in
`areConversionCompatible/castSameSizedTypes`.
https://invent.kde.org/qt/clang/llvm/-/commit/c34d2c30e86358bfe308558b5e0719e9f5305153

Git commit e2572b883f0b2bc7a7a3808e484039f9382aa898 by GitHub (on behalf of Ming-Yi Lai) on 20/07/2026 at 07:12..
[LLD][RISCV][Zicfilp] Generate unlabeled landing pad-style PLT (#145461)

To support dynamic linking when Zicfilp is enabled, lpad insns are
inserted into PLTs. This patch generates the unlabeled landing pad-style
PLT, in which all the lpads have label `0`, when ZICFILP-unlabeled is
enabled:

--- PLT Header:

```
1:  auipc  t3, %pcrel_hi(.got.plt)
    sub    t1, t1, t2
    l[w|d] t2, %pcrel_lo(1b)(t3)
    addi   t1, t1, -(hdr size + 16)
    addi   t0, t3, %pcrel_lo(1b)
    srli   t1, t1, log2(16/PTRSIZE)
    l[w|d] t0, PTRSIZE(t0)
    jr     t2
```

--- PLT Entry:

```
     lpad 0
1:   auipc   t2, %pcrel_hi([email protected])
     l[w|d]  t2, %pcrel_lo(1b)(t2)
     jalr    t1, t2
```

(The PLT format is specified in the psABI draft at
<https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/417>)

---------

Co-authored-by: Piyou Chen <[email protected]>
Co-authored-by: Kito Cheng <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/e2572b883f0b2bc7a7a3808e484039f9382aa898

Git commit 21d537e48677c6c9f3fe679694bba7bcaece90ce by GitHub (on behalf of Mel Chen) on 20/07/2026 at 07:28..
[LV][Test] Rename conflicting IR values to avoid FileCheck conflicts. nfc (#210293)
https://invent.kde.org/qt/clang/llvm/-/commit/21d537e48677c6c9f3fe679694bba7bcaece90ce

Git commit 99789ca18a7982a0b8d63e681d957590f67455c4 by GitHub (on behalf of A. Jiang) on 20/07/2026 at 07:32..
[libc++] Add tests for LWG3798 and mark it as Complete (#210640)
https://invent.kde.org/qt/clang/llvm/-/commit/99789ca18a7982a0b8d63e681d957590f67455c4

Git commit 9e2e9b33e14808541c0470b92ade34bee6608bf6 by GitHub (on behalf of Pavel Labath) on 20/07/2026 at 07:46..
[libc] Port process utilities to hermetic mode and enable some tests (#209999)

This is achieved by calling internal libc functions in hermetic mode. In
the overlay mode I keep calling the system functions so that the tests
work even on systems which don't have these implemented.

I also needed to implement the delete operators as both the libc proper
and the test framework uses them nowadays.

This is sufficient to enable all stdlib tests in hermetic mode, except
for one, which actually exposes a bug in the implementation. I'll deal
with that in a separate patch.
https://invent.kde.org/qt/clang/llvm/-/commit/9e2e9b33e14808541c0470b92ade34bee6608bf6

Git commit ba9a115e3ba30699cafe7815d851f89f02f821ea by GitHub (on behalf of Adam Scott) on 20/07/2026 at 07:51..
[AArch64] Fold vector shifts guarded against oversized amounts into USHL (#207628)

`select(icmp ult(amt, EltSize), shl(x, amt), 0)`, where EltSize is the
{8, 16, 32, 64} lane size, is the usual way to guard a variable vector
shift against shl poison. On AArch64 the guard is unnecessary because
USHL already returns zero once the shift amount reaches the lane size.

For v4i32:

Before:
```
	movi	v2.4s, #63
	movi	v3.4s, #32
	and	v1.16b, v1.16b, v2.16b
	ushl	v0.4s, v0.4s, v1.4s
	cmhi	v1.4s, v3.4s, v1.4s
	and	v0.16b, v1.16b, v0.16b
```
After:
```
	movi	v2.4s, #63
	and	v1.16b, v1.16b, v2.16b
	ushl	v0.4s, v0.4s, v1.4s
```

USHL reads each lane's shift amount as a signed value from its low byte
so amounts above 127 would be misread. The fold applies directly when
known bits can prove the amounts are at most 127 and otherwise the
amounts are clamped to EltSize with umin first, which is still one
instruction cheaper than the select.

NEON has no umin for 64-bit lanes so unbounded v2i64 amounts use the SVE
umin when available and otherwise keep the select.

lshr gets the same fold since it already lowers to ushl with a negated
amount.

This is the AArch64 counterpart of #86922, which added the same folds
for AVX2's variable shifts. This does the select(shift) half; the
shift(select) form will be a follow-up.

Closes #200698.
https://invent.kde.org/qt/clang/llvm/-/commit/ba9a115e3ba30699cafe7815d851f89f02f821ea

Git commit 92aded9ac802ed85971627bfa651697f960eefbf by GitHub (on behalf of Kareem Ergawy) on 20/07/2026 at 07:54..
[flang][PFT-to-MLIR] Wrap unstructured Fortran constructs in scf.execute_region (#208635)

Extend the PFT-to-MLIR (HLFIR/FIR) lowering so unstructured DO and IF
constructs are emitted inside scf.execute_region, hiding their
multi-block CFG behind a single op. OpenACC lowerings that reject
multi-block content (e.g. the "unstructured do loop in combined acc
construct" TODO in OpenACC.cpp) now see a structured op instead.

The main goal is to prevent propagating the "unstructured" property up
the evaluation tree just because one nested evaluation is unstructured;
which is the current behavior.

Flag: -mmlir --wrap-unstructured-constructs-in-execute-region (default
on).

An evaluation is wrappable iff all of the following hold:

  * wrap flag on
  * eval is parser::DoConstruct or parser::IfConstruct
  * eval.isUnstructured
* branchesAreInternal(eval) -- every controlSuccessor in the subtree
targets a nested eval or the constructExit
* !hasIncomingBranch(eval) -- no outside eval branches into the body
(PFT's synthetic IfConstruct around `if(c) goto X` absorbs label targets
between the IF and X; the incoming-branch check excludes such wrappers
when an outer GOTO names one of those labels)
* does not contain a ReturnStmt -- its lowering creates the function's
final block in the current region, which would mis-parent func.return
* not an infinite DO and does not contain one (no LoopControl in any
nested DO): the wrap's yield is unreachable and the body has no
write-shaped side effects, so RegionDCE treats the wrap as trivially
dead and drops it. Excluding the whole enclosing construct keeps such
infinite loops visible in the parent CFG.
* not the body DO of an enclosing OpenACCLoopConstruct or
OpenACCCombinedConstruct -- nor one of the N collapsed iterator DOs
reached by walking down through `collapse(N)`. Such DOs are driven
directly into acc.loop by the OpenACC lowering, so wrapping them would
hide the iteration from the acc.loop op.

Diagnostics
-----------
Emit per-wrap and per-function diagnostics on stderr so the wrapping is
observable from a single compile invocation:

  [wrap-unstructured] wrapped DO at <loc>
  [wrap-unstructured] wrapped IF at <loc>
  [wrap-unstructured] summary: N execute_region(s) wrapping unstructured
                      constructs at <loc>

The counter is reset per function and the summary is suppressed when no
wraps fire.

Co-authored-by: Claude Opus 4.7 <[email protected]>

---------

Co-authored-by: Claude Opus 4.7 <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/92aded9ac802ed85971627bfa651697f960eefbf

Git commit 751fca6c06e4d29b8d2a62c307afce8ba6a0a101 by GitHub (on behalf of Fangrui Song) on 20/07/2026 at 08:06..
[Driver][test] Unwrap freebsd-mips-as.c RUN lines (#210658)

Collapse 3-line RUN blocks to 2 lines and move -### immediately after
%clang, matching the prevailing style for new tests.
https://invent.kde.org/qt/clang/llvm/-/commit/751fca6c06e4d29b8d2a62c307afce8ba6a0a101

Git commit a4ca7f3a670c84196cad4c739114b316fed6d8f1 by GitHub (on behalf of Pavel Labath) on 20/07/2026 at 08:09..
[libc][cmake] Remove proxy header XXX_macros -> XXX.h deps (#210008)

In the full build mode, these headers do not include the main XXX.h
header, which makes sense, because they exist to allow us only to expose
a part of it. They do include it in the overlay mode, but in this case,
they are referring to the header from the libc being overlaid, which
exists outside of the build system.

Also fix float_macros by moving
libc.include.llvm-libc-macros.float_macros from DEPENDS to
FULL_BUILD_DEPENDS, as llvm-libc-macros/float-macros.h is only included
under LIBC_FULL_BUILD.
https://invent.kde.org/qt/clang/llvm/-/commit/a4ca7f3a670c84196cad4c739114b316fed6d8f1

Git commit f214ce6b0a9a6af9b1d899895e29cbba68ee2726 by GitHub (on behalf of Pavel Labath) on 20/07/2026 at 08:10..
[libc][bazel] Add missing arpa/inet functions and tests (#210310)

Add bazel build targets for the remaining arpa/inet functions
(inet_addr, inet_aton, inet_ntoa, and inet_ntop) along with their unit
tests and supporting targets (__support_net_address, headers, and proxy
types).

Assisted by Gemini.
https://invent.kde.org/qt/clang/llvm/-/commit/f214ce6b0a9a6af9b1d899895e29cbba68ee2726

Git commit 72e0b55f9b1fd69030d7e9853a708bfd2fba36ec by GitHub (on behalf of Florian Hahn) on 20/07/2026 at 08:29..
[ConstraintSys] Solve sub-system with variables needed for query (#210432)

Update ConstraintSystem to only solve the sub-system containing all
variables relevant to a given query.

The sub-system contains the transitive closure of all variables in rows
involving the variables in the constraint to prove.

The iterative collection loop only needs very few iterations to
complete. The pruned system can significantly speed up Fourier–Motzkin
elimination and reduce the cost of copying the system.

This helps to notably decrease compile-time in cases when there are
larger numbers of variables & rows (especially during (Thin)LTO).

Highlights include
 * stage1-ReleaseThinLTO: -0.16%
 * stage1-ReleaseLTO-g: -0.19%
 * stage1-aarch64-O3: -0.04%


https://llvm-compile-time-tracker.com/compare.php?from=1f2772f8e26beb909c2a559f1fb08697e3e06909&to=77fbe7926609da96a193254e44efd1d6f8a097de&stat=instructions%3Au

Note that we will now stop to simplify conditions in code we proved
dead/unreachable earlier; previously, unrelated constraints in the
system that form contradictions would allow proving any unrelated fact.
After pruning, unrelated facts will no longer contribute.
https://invent.kde.org/qt/clang/llvm/-/commit/72e0b55f9b1fd69030d7e9853a708bfd2fba36ec

Git commit 4234ff65326237102157875f6ddf098355864178 by GitHub (on behalf of Nikolas Klauser) on 20/07/2026 at 08:35..
Reapply "[libc++][NFC] Inline std::function members into the class body" (#209555) (#210260)

This caused LLDB to fail, which has been fixed now.

This reverts commit 7618426138aae95561da676a1d1e10ee0392bf78.
https://invent.kde.org/qt/clang/llvm/-/commit/4234ff65326237102157875f6ddf098355864178

Git commit 1ad0e6989597f550e1a5b53abd889366b65aa6c7 by GitHub (on behalf of Fangrui Song) on 20/07/2026 at 08:37..
[Driver,FreeBSD] Fix -pie for -r and -no-pie links (#210663)

Port Gnu.cpp changes ae623d16d50c and cac82e26c642 to FreeBSD and
Serenity: -r should suppress -pie. -nopie, OpenBSD specific, should not
be used by other OSes.

Group the options selecting the link mode and place them after -m, as
gnutools::Linker does, so that -r suppresses -export-dynamic and
--hash-style as well, and -no-pie overrides the -fsanitize PIE default.

Drop --enable-new-dtags: default in modern linkers.

Change -Bstatic to -static to follow Gnu.cpp (identical in lld and older
GNU ld).
https://invent.kde.org/qt/clang/llvm/-/commit/1ad0e6989597f550e1a5b53abd889366b65aa6c7

Git commit 37a2803740cc9df3d605431b2410c9d9c0bc5731 by GitHub (on behalf of Kamlesh Kumar) on 20/07/2026 at 08:39..
[AArch64] Add combine for interleave deinterleave (#208414)

These combines now can emit ldN/stN without interleaved access pass.
https://invent.kde.org/qt/clang/llvm/-/commit/37a2803740cc9df3d605431b2410c9d9c0bc5731

Git commit 6fb8d5fd507d976cb8072a7aa245c225c25ee08a by GitHub (on behalf of David Spickett) on 20/07/2026 at 08:42..
[lldb][docs] Remove image links from trace doc (#210664)

The document was first added in https://reviews.llvm.org/D105741 but
that did not include the images (they were not in the RFC or discussions
either).
https://invent.kde.org/qt/clang/llvm/-/commit/6fb8d5fd507d976cb8072a7aa245c225c25ee08a

Git commit 03b5c5285eaf0acdc1dc30c5be6e0a7cefeab16f by GitHub (on behalf of Nathan Gauër) on 20/07/2026 at 08:42..
[LSROA] Add logical SROA pass (#192058)

This commit adds a logical-pointer compatible SROA pass. As-is, the pass
does not optimizes nested structs, arrays, or usages of structured
alloca with non-structured GEP instructions.

Adding support for both is not complex, but increase the size of the PR,
hence we can start with this.

Next step will be to allow mem2reg to apply on logical alloca/ptr, and
to add support for nesting/arrays.

---------

Co-authored-by: Nikita Popov <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/03b5c5285eaf0acdc1dc30c5be6e0a7cefeab16f

Git commit b8300a76659d65fd9738de1c1e4bf5b71e9ef72b by GitHub (on behalf of Momchil Velikov) on 20/07/2026 at 08:44..
[GVN] Remove the "private" `llvm::gvn` namespace (NFC) (#210323)

Move `AvailableValue` and `AvailableValueInBlock` into GVNPass, similar
to other helper types.

Retain `llvm::gvn::GVNLegacyPass` as just `llvm::GVNLegacyPass` -
"legacy" is already a sufficent hint and it is not going to become more
"private" by stacking "gvn" prefixes to the name.

Ideally, `GVNLegacyPass` should be defined in an anonymous namespace,
but that is not possible because it is declared as a friend of GVNPass.
https://invent.kde.org/qt/clang/llvm/-/commit/b8300a76659d65fd9738de1c1e4bf5b71e9ef72b

Git commit b9b454166eaa92d2e6e129f6c21ad59639d8364e by GitHub (on behalf of Hongyu Chen) on 20/07/2026 at 08:51..
[RISCV][P-ext] Generalize lowerVECTOR_SHUFFLEAsRV32PNarrowingShift (#210522)

The previous implementation only matches
`shuffle(extract_subvector(src), extract_subvector(src), mask)`.
This patch generalizes it to `shuffle(a, b, mask)`, so we can now lower
it to `PNSRL(concat(a,b), element_bits)` if it is a deinterleave
shuffle. And we use `foldConcatVector` to handle the original pattern
with `extract_subvector`.
https://invent.kde.org/qt/clang/llvm/-/commit/b9b454166eaa92d2e6e129f6c21ad59639d8364e

Git commit 023361f8ef6aa47d10cd839515c58322890367c3 by GitHub (on behalf of David Spickett) on 20/07/2026 at 08:52..
[lldb][AArch64][Linux][NFC] Move RegisterSetType enum into header (#207145)

I will be using this later to replace all the register specific
functions this class has (WriteSVE/ReadSVE and so on) with single
functions that use RegisterSetType to decide what to do.

While I'm here, I've made some sizeof and casts use RegisterSetType in
case the underlying type changes later.
https://invent.kde.org/qt/clang/llvm/-/commit/023361f8ef6aa47d10cd839515c58322890367c3

Git commit 975c8f5a7b25f84a257ddfaf9605c62147a0913d by GitHub (on behalf of Raphael Isemann) on 20/07/2026 at 09:16..
[lldb][NFC] Remove various Stream::Printf calls with constants (#210294)

`Stream::Printf` needs to call various other (variadic) functions, needs
to parse the input string and potentially handle too-long format
outputs. Calling in with a constant string is wasting a lot of
instruction on doing nothing.

assisted-by: claude
https://invent.kde.org/qt/clang/llvm/-/commit/975c8f5a7b25f84a257ddfaf9605c62147a0913d

Git commit 1c1c0657f990b92d23067cb7367772f4c91ea32b by GitHub (on behalf of Abhay Kanhere) on 20/07/2026 at 09:20..
[ConstraintElim] LSHR x, n <=  x  when n< bitwidth (#209583)

A logical right shift never increases an unsigned value:
   for %r = lshr %x, %n, add the fact %r u<= %x when LSHR is not poison.

This extends the existing udiv/urem fact modeling to lshr.


https://alive2.llvm.org/ce/z/RUTMwe proof shown with constant value <
bit size
https://invent.kde.org/qt/clang/llvm/-/commit/1c1c0657f990b92d23067cb7367772f4c91ea32b

Git commit ead8fd8e29fbf3774b7a08bf7b991c2ada30112b by GitHub (on behalf of Hristo Hristov) on 20/07/2026 at 09:23..
[libc++][ranges][NFC] Format `lazy_split_view` (#210644)

Pre-requisite for: https://github.com/llvm/llvm-project/pull/193891
https://invent.kde.org/qt/clang/llvm/-/commit/ead8fd8e29fbf3774b7a08bf7b991c2ada30112b

Git commit eec2f0916d44c33beac52f4396c7a9c98b0c9cf6 by GitHub (on behalf of Hristo Hristov) on 20/07/2026 at 09:23..
[libc++][NFC] Removed duplicated `_LIBCPP_INTRODUCED_IN_LLVM_23` macros (#210602)

Removed the redundant macros, which apparently were added by two
different patches.
https://invent.kde.org/qt/clang/llvm/-/commit/eec2f0916d44c33beac52f4396c7a9c98b0c9cf6

Git commit 39a2c6a695f9d045b05fd5798a7cb99f3c7425a7 by GitHub (on behalf of Hristo Hristov) on 20/07/2026 at 09:23..
[libc++][test][NFC] Removed unsupported compilers from tests (#210413)
https://invent.kde.org/qt/clang/llvm/-/commit/39a2c6a695f9d045b05fd5798a7cb99f3c7425a7

Git commit 9cb6db4e3814fba503389aa0af16960847295fd2 by GitHub (on behalf of Momchil Velikov) on 20/07/2026 at 09:26..
Revert "[GVN] Remove the "private" `llvm::gvn` namespace (NFC)" (#210666)

Reverts llvm/llvm-project#210323

FAILED: lib/Transforms/Scalar/CMakeFiles/LLVMScalarOpts.dir/GVN.cpp.o 


/var/llvm-compile-time-tracker/llvm-project/llvm/lib/Transforms/Scalar/GVN.cpp:4001:27:
error: qualified name does not name a class before ‘:’ token
 4001 | class llvm::GVNLegacyPass : public FunctionPass {
https://invent.kde.org/qt/clang/llvm/-/commit/9cb6db4e3814fba503389aa0af16960847295fd2

Git commit ded79d9ddea47eb3a42da740353c16d21e890354 by GitHub (on behalf of Arseniy Obolenskiy) on 20/07/2026 at 09:49..
[SPIR-V] Reject fp128 and ppc_fp128 types with a diagnostic (#208397)

Introduced as a part of discussion in
https://github.com/llvm/llvm-project/pull/208219
https://invent.kde.org/qt/clang/llvm/-/commit/ded79d9ddea47eb3a42da740353c16d21e890354

Git commit 4caba63c698121203eea9280a392159dc6328e68 by GitHub (on behalf of David Spickett) on 20/07/2026 at 09:52..
[lldb][test] Double the timeout for TestGuiSpawnThreads.py (#210043)

If the host machine is overloaded, spawning threads may be delayed due
to lack of resources. I'm pretty sure this is the cause of failures in
GitHub CI reported in
https://github.com/llvm/llvm-project/issues/209874.

For what the test is doing, we unfortunately cannot get around needing
to wait on the test program.

We could perhaps come up with a lit mode that runs some tests in serial,
but this is a larger project than I want to get into now.

For now, let's try doubling the timeout. This test is unlikely to fail
for real, so if it's taking a long time, it'll be due to system
resources. In 99% of cases, it'll pass in a few seconds still.
https://invent.kde.org/qt/clang/llvm/-/commit/4caba63c698121203eea9280a392159dc6328e68

Git commit 35c8e920cdd5b53dccfd669ebd92f3e06f534aae by GitHub (on behalf of Valery Pykhtin) on 20/07/2026 at 10:02..
[NFC][AMDGPU] Use SIInstrFlags predicates in SIMemoryLegalizer and AMDGPUBaseInfo. (#209821)

Part of a series following the introduction of SIInstrFlags predicates.
https://invent.kde.org/qt/clang/llvm/-/commit/35c8e920cdd5b53dccfd669ebd92f3e06f534aae

Git commit 195df3d4654b43ecf35927e574a8061bfaecbb78 by GitHub (on behalf of Matsu) on 20/07/2026 at 10:14..
[mlir][OpenACC] Privatize worker reduction accumulators per worker (#210456)

Example:
```fortran
!$acc parallel
!$acc loop gang reduction(+:sum)
do k = 1, p
  !$acc loop worker reduction(+:sum)
  do j = 1, n
    !$acc loop vector reduction(+:sum)
    do i = 1, m
      sum = sum + a(i,j,k)
    end do
  end do
end do
```

In this code, the worker accumulator is both gang- and worker-scoped.
Shared
memory allocated only one copy, so workers raced while updating the same
value.

Fix: allocate one shared-memory accumulator per worker whenever worker
parallelism is present.
https://invent.kde.org/qt/clang/llvm/-/commit/195df3d4654b43ecf35927e574a8061bfaecbb78

Git commit 91ad9f0ce9655eb3715c937f7d64d329bac63817 by GitHub (on behalf of Petar Avramovic) on 20/07/2026 at 10:48..
AMDGPU/GlobalISel: Handle G_BITCAST for 16 bit extendedLLTs (#208750)

Handle bitcast between i16 and f16/bf16.
For true16 this was already legal, make it legal in regbanklegalize as well.
For non-true16 widen it using G_ANYEXT to i32 and G_TRUNC to dst.
The "i32 G_ANYEXT f16/bf16" and "f16/bf16 G_TRUNC i32" are already legal,
for example these are generated by common CallLowering argument lowering.
https://invent.kde.org/qt/clang/llvm/-/commit/91ad9f0ce9655eb3715c937f7d64d329bac63817

Git commit 7aa5b246f173dca6b326b49bd65f53f1a072fdf1 by Petar Avramovic on 20/07/2026 at 10:52..
AMDGPU/GlobalISel: Switch legalizer intrinsic lowering to extended LLTs

Affects various buffer intrinsics.
https://invent.kde.org/qt/clang/llvm/-/commit/7aa5b246f173dca6b326b49bd65f53f1a072fdf1

Git commit 98995d244b81f1603faee8928d06f435b8109f25 by Petar Avramovic on 20/07/2026 at 10:57..
AMDGPU/GlobalISel: Fix G_UNMERGE_VALUES lowering for extended LLTs

Use integer type for bit twiddling instead of scalar.
https://invent.kde.org/qt/clang/llvm/-/commit/98995d244b81f1603faee8928d06f435b8109f25

Git commit 67b1e4a76cf128f7e38a1ba89944d7f5e3991ae6 by Petar Avramovic on 20/07/2026 at 10:57..
AMDGPU/GlobalISel: Fix G_MERGE_VALUES lowering for extended LLTs

Use integer type for bit twiddling instead of scalar.
https://invent.kde.org/qt/clang/llvm/-/commit/67b1e4a76cf128f7e38a1ba89944d7f5e3991ae6

Git commit 44b48862f4865c3d7d79bd49dd8835b026fddd52 by Petar Avramovic on 20/07/2026 at 10:57..
AMDGPU/GlobalISel: Stop using changeTo in legaizer actions

Use changeElementSizeTo or changeElementCountTo to preserve extended LLT.
https://invent.kde.org/qt/clang/llvm/-/commit/44b48862f4865c3d7d79bd49dd8835b026fddd52

Git commit 42b927145a905dd66dd0135c9ed1b98eae51e0a2 by Petar Avramovic on 20/07/2026 at 10:57..
AMDGPU/GlobalISel: Fix legalizer lowering for G_EXTRACT/INSERT_VECTOR_ELT

Use LLT::integer in bit twiddling lowering for extract/insert vector element.
https://invent.kde.org/qt/clang/llvm/-/commit/42b927145a905dd66dd0135c9ed1b98eae51e0a2

Git commit fb0046e216202e132f67b3dbff2844f546554dfa by Petar Avramovic on 20/07/2026 at 10:57..
AMDGPU/GlobalISel: Explicitly widen scalar to i32 for load and store

Affects f16 and bf16. Earlier, they were widened to f32 and s32 respectively.
The actual error was the artifact combiner creating a copy between f32/i32
which fails in the machine verifier. Maybe we could create a bitcast there.
However i32 is more efficient for us and matches well with how argument
lowering keeps f16 and bf16 in i32 copies to/from physical registers.
Also starting from f16 store, G_STORE %0(f16), %1(p1) :: (store (f16),
and doing widen scalar to 32 bit type, i32 makes more sense since store
will store 16 least significant bits G_STORE %0(i32), %1(p1) :: (store (f16)
compared to G_STORE %0(f32), %1(p1) :: (store (f16), which looks incorrect if
we assume input was really in f32 format.
https://invent.kde.org/qt/clang/llvm/-/commit/fb0046e216202e132f67b3dbff2844f546554dfa

Git commit db8938d17a69061ecc65dd5b7ae0bc5c474760a4 by Petar Avramovic on 20/07/2026 at 10:57..
AMDGPU/GlobalISel: Use integer as MMO type for loads and stores lowering

We could get away with just the type from MMO in most cases, but MMO splitting
creates MMO with LLT::scalar and we prefer integer.
https://invent.kde.org/qt/clang/llvm/-/commit/db8938d17a69061ecc65dd5b7ae0bc5c474760a4
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.