[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/main'.
Changed from 2877672c1331f9a99f645a0ad25801380da42dcd to b97d8b20b7ba2f3bb18a12974f1e97c7ec158ac3
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 4d10131304d90d997868f2417b086ad1cd116ebc by GitHub (on behalf of Fangrui Song) on 10/08/2026 at 05:34..
[BFI] Index iterative inference by block number (#215179)

`applyIterativeInference` builds a DenseMap assigning each participating
block a position in a dense vector. Block numbers already provide that
index, and BFI uses them elsewhere.
https://invent.kde.org/qt/clang/llvm/-/commit/4d10131304d90d997868f2417b086ad1cd116ebc

Git commit 52d63830c519ed2d51c43fc418f0ae3232ac65e9 by GitHub (on behalf of Fangrui Song) on 10/08/2026 at 05:49..
[Support] Optimize ScaledNumbers::multiply64 (#215172)

The 128-bit product is assembled from four 32x32 cross products.
(4 imul on x86-64). Use `__uint128_t` where available.
https://invent.kde.org/qt/clang/llvm/-/commit/52d63830c519ed2d51c43fc418f0ae3232ac65e9

Git commit a4f740f144ddccb30bd3b26c69740914518a642b by GitHub (on behalf of Bagodiya) on 10/08/2026 at 06:17..
[InstCombine] Fold X + ((-X) & (C - 1)) to (X + C - 1) & -C (#215122)

`X + ((-X) & (C - 1)) --> (X + C - 1) & -C` for power-of-two `C`.

This is the align-up idiom as allocators usually write it. `-C == ~(C -
1)`, so
the mask is just the inverted low-bit mask.
No wrapping flags needed - it verifies without nsw/nuw on either side.
Flags on
the original add are dropped.

The other fold in the issue, `X + (X | -X) --> X & (X - 1)`, already
exists in
visitAdd, so this only adds the second one.

One case that doesn't hit this: `C = 2`. InstCombine turns `(-X) & 1`
into
`X & 1` first, so the neg is already gone.

 https://alive2.llvm.org/ce/z/sCCJzq
C = 2: https://alive2.llvm.org/ce/z/xeQqkz

Fixes #214675
https://invent.kde.org/qt/clang/llvm/-/commit/a4f740f144ddccb30bd3b26c69740914518a642b

Git commit 3eb121cd9f7d2069493b19f83434570caad11e70 by GitHub (on behalf of Bryth) on 10/08/2026 at 06:18..
[mlir][complex] Make AddOp commutative (#212199)

Complex AddOp should have the `Commutative` trait to follow Arith's
AddOp semantics.
https://invent.kde.org/qt/clang/llvm/-/commit/3eb121cd9f7d2069493b19f83434570caad11e70

Git commit 93c0911a74433395155ceee38dfe8842f0fc639d by GitHub (on behalf of Bryth) on 10/08/2026 at 06:19..
[mlir][complex] Fix signed zero miscompile with complex.add fold (#212751)

The pattern `a + complex.constant<0.0, 0.0>` currently gets folded to
`a`. This is incorrect when e.g. `a=(-0.0, 1.0)` since as per the IEEE
spec and what's done in the arith dialect `0.0 + (-0.0) = 0.0 !=
(-0.0)`.

This PR changes the pattern to `a + complex<-0.0, -0.0> -> a` and
updates the associated test.
https://invent.kde.org/qt/clang/llvm/-/commit/93c0911a74433395155ceee38dfe8842f0fc639d

Git commit 129267e8fcfca0bc68509817f944eea6b6910ac5 by GitHub (on behalf of Kaviya Rajendiran) on 10/08/2026 at 06:40..
[Flang][OpenMP] Add nsw flags to OMPIRBuilder loop IV arithmetic (#214165)

- Extended the support of `-fno-wrapv` flag setting from frontend to the
OMPIRBuilder via `omp.integer_wrap_around` module attribute.
- When this attribute `omp.integer_wrap_around` is false (-fno-wrapv),
the OMPIRBuilder attaches `nsw` to all loop IV arithmetic.
- This enables SCEV to form proper `AddRec` expressions for the loop IV,
allowing `IndVarSimplify pass` to widen it from i32 to i64 and eliminate
the in-loop sext instruction which helps some backend optimizations and
also producing IR similar to Clang.

Fixes https://github.com/llvm/llvm-project/issues/213718
https://invent.kde.org/qt/clang/llvm/-/commit/129267e8fcfca0bc68509817f944eea6b6910ac5

Git commit b595a746983b828c40140df53fe01eb76c6044f4 by GitHub (on behalf of MiaoMing Chen) on 10/08/2026 at 06:49..
[clang][ASTMatchers] Fix `hasArraySize` crash without a size expression (#215082)

CXXNewExpr::getArraySize() returns std::nullopt even when isArray() is
true, e.g. when there is no array size expression, as in 'new int[]()'.
The hasArraySize matcher dereferenced the optional unconditionally,
triggering undefined behavior (an assertion failure in assert-enabled
builds). Check the optional for engagement before matching.

Since getArraySize() already returns std::nullopt when isArray() is
false, the redundant isArray() check can be dropped.

Add a clang-tidy regression test that runs clang-tidy on a translation
unit containing 'new int[]()', which emits a compiler diagnostic but
must not crash the tool, and document the fix in the release notes.

Fixes #214281
https://invent.kde.org/qt/clang/llvm/-/commit/b595a746983b828c40140df53fe01eb76c6044f4

Git commit 1f85e810c9ae0e8f9f44a7373c5409d8e586ed06 by GitHub (on behalf of Pranav Kant) on 10/08/2026 at 06:51..
[LoopInfo] Do not enqueue unreachable nodes; fix infinite loop (#214832)

Before this patch, we were enqueing unreachable nodes reaching into the
latch nodes. Since unreachable nodes haven't been visited in the
original DFS algorithm, we end up in an infinite loop within enqueue

This patch restores isReachableFromEntry() check from now removed
discoverAndMapSubloop(). This should avoid infinite loop.

It's a regression from #212000
(5d582e4003b1cab59900d16fa3db9c3a9d16b462)

---------

Co-authored-by: Alexander Kornienko <[email protected]>
Co-authored-by: Alexis Engelke <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/1f85e810c9ae0e8f9f44a7373c5409d8e586ed06

Git commit 0f985af790f8d542b126de8c3d219fc591df9652 by GitHub (on behalf of William Tran-Viet) on 10/08/2026 at 06:53..
[libc++] Refactor `optional<T>` and `optional<T&>` base classes (#215012)

- Remove the shared `__optional_storage_base` base class and associated
partial specializations to handle the `T&` case in `optional<T>`
- As a consequence, the `static_assert`s that check for reference types
in `optional<T>` need to be moved up to the base class as the
`is_object_v` check is tripped, otherwise.
- Directly inline base class functions for both that used to exist to
accommodate a "dual-mode" (`T` and `T&`) `optional`.
https://invent.kde.org/qt/clang/llvm/-/commit/0f985af790f8d542b126de8c3d219fc591df9652

Git commit 98d5b27f79fc897cfc8b72a91a20890fb7443156 by GitHub (on behalf of LU-JOHN) on 10/08/2026 at 06:58..
[AMDGPU] Fold constants in 2-elt vector canonicalization (#214384)

For 2-element vectors convert:

`fcanonicalize (build_vector x, k)` -> `build_vector (fcanonicalize x),
(fcanonicalize k)`
`fcanonicalize (build_vector x, undef)` -> `build_vector (fcanonicalize
x), 0`

if fcanonicalize is Legal for a single element.  

Previously only v2f16 was transformed. Now v2f32 and v2f64 are also
transformed, but v2f16 is naturally excluded.

---------

Signed-off-by: John Lu <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/98d5b27f79fc897cfc8b72a91a20890fb7443156

Git commit df555425e7023fb1783525a6feee57f82d82b0fb by GitHub (on behalf of Hristo Hristov) on 10/08/2026 at 07:06..
[libc++][memory] LWG4148: `unique_ptr::operator*` should not allow dangling references (#214971)

Implements https://wg21.link/LWG4148

Closes #118362

---------

Co-authored-by: Mohamed Atef <[email protected]>
Co-authored-by: Hristo Hristov <[email protected]>
Co-authored-by: A. Jiang <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/df555425e7023fb1783525a6feee57f82d82b0fb

Git commit 54d02da71ecee5569e515a43dc9e5429917078f6 by GitHub (on behalf of Chuanqi Xu) on 10/08/2026 at 07:26..
[C++20] [Modules] Don't set clang module as named module for module duplication check (#215184)

Close https://github.com/llvm/llvm-project/issues/204632

Note that the error message is already diagnosed. So we don't need to do
additional thing here.
https://invent.kde.org/qt/clang/llvm/-/commit/54d02da71ecee5569e515a43dc9e5429917078f6

Git commit 2b2bf30c00ae068c1edf3c7753c8c14157207f64 by GitHub (on behalf of SunilKuravinakop) on 10/08/2026 at 07:32..
[flang][OpenMP] Support for compare fail (#214179)

Support for fail clause in "!omp atomic compare fail".
  
This also Fixes
[#214176](https://github.com/llvm/llvm-project/issues/214176)

Co-authored-by: Sunil Kuravinakop
https://invent.kde.org/qt/clang/llvm/-/commit/2b2bf30c00ae068c1edf3c7753c8c14157207f64

Git commit 8ea1b9dc4dbea13e0c093389399a28b9b35bb629 by GitHub (on behalf of Lang Hames) on 10/08/2026 at 07:42..
[ORC] Generalize rt::Proxy result mapping to Error / Expected<T> callees (#215181)

Previously a Proxy's callee return type RetT mapped to the client-facing
result (ErrorRetT) as: void -> Error, everything else -> Expected<RetT>.
That could not represent a callee whose own result is fallible: an
Error-returning callee became Expected<Error>, and an Expected<T> callee
became Expected<Expected<T>>.

Generalize the mapping to:
  void        -> Error
  Error       -> Error
  T           -> Expected<T>
  Expected<T> -> Expected<T>   (flattened, not nested)

so a dispatch failure and the callee's own error collapse into a single
Error/Expected<T>. The SPS ProxySpec dispatch handles the new cases,
forwarding an Error/Expected callee's own result and, on a dispatch
failure, discarding the (unproduced) placeholder result before reporting
the error.

This is a pure generalization in support of upcoming work that needs to
proxy APIs returning Error or Expected<T>.

Adds ProxyTest and SPSProxiesTest coverage for the Error and Expected<T>
cases, plus static_asserts pinning the type mapping.
https://invent.kde.org/qt/clang/llvm/-/commit/8ea1b9dc4dbea13e0c093389399a28b9b35bb629

Git commit 82825dd420c562d5dab1ef884f5d0b8c10eab7a5 by GitHub (on behalf of Folkert de Vries) on 10/08/2026 at 08:43..
[MIPS] fix zero-sized type  causing incorrect register for later float arguments (#213746)

fixes https://github.com/llvm/llvm-project/issues/213540

https://godbolt.org/z/zMW6MMoze

On O32 a zero-sized type is not passed, but it does (in GCC) end the run
of leading float arguments that are passed in float registers. The new
behavior is consistent with GCC. It seems unlikely that people rely on
this (zero-sized structs are rare in C, but much more common in Rust) so
I did not bother with the ABI flag. It could be added though if there is
reason to.
https://invent.kde.org/qt/clang/llvm/-/commit/82825dd420c562d5dab1ef884f5d0b8c10eab7a5

Git commit 57227c70be689b1d81354adadcc01bb292da939a by GitHub (on behalf of Dhairyashil R G) on 10/08/2026 at 08:49..
[mlir][vector] Don't fold in_bounds for scalable vector dimensions (#213506)

`isInBounds` compares `index + getVectorType().getDimSize(resultIdx)`
against the static size of the corresponding source dimension. For a
scalable dimension the vector holds `vscale * getDimSize(resultIdx)`
elements, so the static size is only a lower bound and the comparison
can succeed for a transfer that is actually out of bounds.

For example, reading `vector<[4]xf32>` at index 0 of a `memref<4xf32>`
folds to `in_bounds = [true]` because `0 + 4 <= 4`. Lowering then turns
a predicated masked load into a plain full-width load:

```mlir
// Without the fold: predicated, lanes >= 4 are inactive.
%8  = llvm.intr.stepvector : vector<[4]xi32>
%16 = llvm.icmp "slt" %8, %15 : vector<[4]xi32>
%23 = llvm.intr.masked.load %22, %16, %20 {alignment = 4 : i32} :
        (!llvm.ptr, vector<[4]xi1>, vector<[4]xf32>) -> vector<[4]xf32>

// With the fold: unpredicated, reads `4 * vscale` elements.
%9  = llvm.load %8 {alignment = 4 : i64} : !llvm.ptr -> vector<[4]xf32>
```

which reaches AArch64 as `ld1w { z1.s }, p1/z, [x1]` and `ldr z1, [x1]`
respectively. For every `vscale > 1` the folded form reads past the end
of the allocation. The same applies to `vector.transfer_write`, where
the fold turns a masked store into an out-of-bounds one.

Bail out for scalable result dimensions. Fixed-size dimensions of a
partly scalable vector are unaffected and still fold; the added
`vector<4x[4]xf32>` test covers that.

Confirmed on SVE hardware (AWS Graviton3, 256-bit vectors, vscale = 2)
with the 4-element buffer placed flush against a PROT_NONE guard page:

  predicated   ld1w -> returns 10.0, exit 0
  unpredicated ldr  -> SIGSEGV, exit 139

Assisted-by: Claude
https://invent.kde.org/qt/clang/llvm/-/commit/57227c70be689b1d81354adadcc01bb292da939a

Git commit f1890ba90f6fbe42d6d0dd13fe4129f66292ccfb by GitHub (on behalf of David Spickett) on 10/08/2026 at 09:19..
[lldb][AArch64] Use unique_ptr instead of statics in RegisterTypeDetector (#214515)

Fixes #214264.

I used static variables for the created types, on the assumption
that only one detector would be used and that the host's
features would not change.

That is true for an lldb-server on a real Linux/FreeBSD system.
It is not true when we use the detector with core files. In the
same LLDB session you might load several files that came from
systems with different features.

The result was that the first detection sets up the static variables
and future detections do not update them. So subsequent core
files can have incorrect types.

(and in future if types vary per-process, we could have the same
issue in lldb-server)

To address this I am changing where the types are stored so that
each instance of the detector has its own set of types for which
it manages the lifetime.

* There is a vector of unique pointers to types. This vector
  is a member, so is per instance of the detector class.
* As new types are added to this vector, it may reallocate,
  but the location of the RegisterTypes themselves will stay
  the same, this is important.
* Detector functions use MakeType to create types, and MakeType
  handles managing the vector. Nothing else accesses the vector
  directly.
* MakeType returns a raw pointer to the type.
* Detector functions return a raw pointer to the top level
  type for the register. For example if it has flags that
  have enums for their fields, the flags type is the top level
  type.
* These top level raw pointers are given to the rest of LLDB.
* We assume that the lifetime of the dector is > that of anyone
  using the raw pointers.
* When the detector destructs, the unique pointers destruct and
  the RegisterTypes are freed.

This handing out of raw pointers is likely a bad idea, but I
want to keep the changes here within the detector.

All existing tests pass, and I have added a test that loads 2
core files with different features. That test fails without
these changes because the STORE_ONLY feature is detected
incorrectly.
https://invent.kde.org/qt/clang/llvm/-/commit/f1890ba90f6fbe42d6d0dd13fe4129f66292ccfb

Git commit b22c8a65c266ad3b3aac1a9344d2a5b01e946ded by GitHub (on behalf of Florian Hahn) on 10/08/2026 at 09:23..
[ConstraintElimination] Defer removal of simplified ssub.with.overflow (#215135)

replaceSubOverflowUses erased the intrinsic as soon as it became dead.
That frees the intrinsic's operand Use array, but the worklist can still
hold UseCheck entries pointing into it, storing a now invalid pointer to
a Use *.

Instead of erasing the intrinsic in place, poison its arguments and push
it onto ToRemove.

PR: https://github.com/llvm/llvm-project/pull/215135
https://invent.kde.org/qt/clang/llvm/-/commit/b22c8a65c266ad3b3aac1a9344d2a5b01e946ded

Git commit 75a45c373407c13a44c7abb28a78d891a97fe665 by GitHub (on behalf of Andrzej Warzyński) on 10/08/2026 at 09:35..
Revert "[mlir][vector] Verify non-unit strides on `masked/expand/compress` ops  (#210952)" (#215224)

This reverts commit ac646b5be0d7764a1dbeb86e4f8d54df2d4fd3eb.

The following integration tests are failing:
  * Integration/Dialect/Linalg/CPU/ArmSME/matmul.mlir
  * Integration/Dialect/Linalg/CPU/ArmSME/multi-tile-matmul-mixed-types.mlir

Failing bot:
  * https://lab.llvm.org/buildbot/#/builders/121/builds/2588
https://invent.kde.org/qt/clang/llvm/-/commit/75a45c373407c13a44c7abb28a78d891a97fe665

Git commit 3736fe2d622bb26ffe2acf80639faa35b4108c79 by GitHub (on behalf of Zeyi Xu) on 10/08/2026 at 09:43..
[clang-tidy] Remove deprecated zircon module (#215063)

Follow up of https://github.com/llvm/llvm-project/pull/162012
https://invent.kde.org/qt/clang/llvm/-/commit/3736fe2d622bb26ffe2acf80639faa35b4108c79

Git commit 4eda802f237735adbc239791853aba4b11c2fb37 by GitHub (on behalf of David Spickett) on 10/08/2026 at 10:02..
[lldb][AArch64] Remove size from type detector entries (#214733)

This was passed to the constructor but goes unused.
The detector functions know the size of the type
they're creating already.
https://invent.kde.org/qt/clang/llvm/-/commit/4eda802f237735adbc239791853aba4b11c2fb37

Git commit 89a2137aa09ec1bb4832628e0fa54adb5831fb0b by GitHub (on behalf of Nikolas Klauser) on 10/08/2026 at 10:04..
[libc++] Remove _IsThisTuple (#213909)

We can inline it into `_EnableUTypesCtor` instead.
https://invent.kde.org/qt/clang/llvm/-/commit/89a2137aa09ec1bb4832628e0fa54adb5831fb0b

Git commit df90dfb7a2652b85e121b94578a6195b9a74e93f by GitHub (on behalf of Dharuni R Acharya) on 10/08/2026 at 10:06..
[NVPTX] Add intrinsics for ue5m3x2 to f16x2/bf16x2 conversions (#214411)

This patch adds the following intrinsics for `ue5m3x2` to `f16x2/bf16x2`
conversions introduced in PTX 9.4:

- `cvt.rn.f16x2.ue5m3x2`
- `cvt.rn{.satfinite}{.scaled::n2::ue8m0}.bf16x2.ue5m3x2`

Tests have been verified through `ptxas-13.4`.
---------

Signed-off-by: DharuniRAcharya <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/df90dfb7a2652b85e121b94578a6195b9a74e93f

Git commit 364002a941d75f281556657cb4529e8265a272aa by GitHub (on behalf of Ramkumar Ramachandra) on 10/08/2026 at 10:13..
[LoopSplitUtils] Revert, removing from tree (#214577)

This reverts commits:

- 2354dce21 ([Transforms][Utils] Add LoopSplitUtils for iteration-space
loop splitting, #205995)
- 8f1efc26 ([Transforms][Utils] Preserve branch weights in
LoopSplitUtils, #213626)
- 49ace5ab ([Transforms][Utils] Test for branch weight preservation in
LoopSplitUtils, #213647)

Removing LoopSplitUtils from the tree completely, as several crashes
were uncovered after it was added. A highly reduced initial version with
much better test coverage is proposed for the re-land.
https://invent.kde.org/qt/clang/llvm/-/commit/364002a941d75f281556657cb4529e8265a272aa

Git commit 47f32bddd3496cea2eac0df5f46108a704dde51d by GitHub (on behalf of Jinpeng Wang) on 10/08/2026 at 10:20..
[VectorCombine] Fold reduction chains with equivalent bitcast sources (#212084)

## Description

`foldShuffleChainsToReduce` currently identifies leaf sources by SSA
value identity.
This can prevent a shuffle reduction chain from being folded when
multiple bitcast instructions represent the same vector source.

This happens when an earlier VectorCombine transform moves a bitcast
through a shuffle and creates a new bitcast of the same underlying
value.
The reduction matcher then sees the original and newly created bitcasts
as separate sources and rejects the fold.

This PR treats bitcast sources as equivalent when they have the same
result type and the same operand.
It then merges the demanded lanes of equivalent sources while preserving
duplicate-lane semantics:

* Reject duplicate or overlapping lanes for non-idempotent reductions.
* Allow overlapping lanes for idempotent reductions.
* Continue to reject sources with different underlying values or result
types.

This allows the default optimization pipeline to recognize and fold the
horizontal reductions in both `hsum_i32_4` and `hsum_i32_8` in #210897

## Tests

* Add VectorCombine tests for:
  * equivalent bitcast sources with disjoint demanded lanes;
  * overlapping lanes for non-idempotent reductions;
  * duplicates within a later equivalent source;
  * bitcasts of different underlying values;
  * overlapping lanes for idempotent reductions.

Fixes #210897.
https://invent.kde.org/qt/clang/llvm/-/commit/47f32bddd3496cea2eac0df5f46108a704dde51d

Git commit 29726d8824c206f3b633f526241df2fc3e68b5b6 by GitHub (on behalf of David Spickett) on 10/08/2026 at 10:22..
[lldb][AArch64] Detect type for many registers with a single function (#214734)

It was pointed out during review of
https://github.com/llvm/llvm-project/pull/214515
that the type for the 2 GCS registers will be created twice.
Each one will have the same ID so we will only emit one and
the other goes unused.

To account for this, and the possibility of not just 2 but N
registers later, I've changed the name in the register entry
to a list of names.

So for the 2 GCS registers we only do detection once, and both
of them will refer to the same instance of the type.
https://invent.kde.org/qt/clang/llvm/-/commit/29726d8824c206f3b633f526241df2fc3e68b5b6

Git commit a7fd911d28814406982bc91adba8427484660496 by GitHub (on behalf of Philipp Rados) on 10/08/2026 at 10:25..
[RISCV] Change undef->poison in cttz_elts.ll test (#215218)

Since `undef` is deprecated and triggers CI-failures when changing
existing tests. Discussed in
https://github.com/llvm/llvm-project/pull/214795#discussion_r3747841496
https://invent.kde.org/qt/clang/llvm/-/commit/a7fd911d28814406982bc91adba8427484660496

Git commit b4c970ca4db13275e3c52c16d0d2c1eaf5777337 by GitHub (on behalf of Simon Pilgrim) on 10/08/2026 at 10:33..
[X86] Add pdep/pext vector test coverage (#215231)

Baseline tests for #214508
https://invent.kde.org/qt/clang/llvm/-/commit/b4c970ca4db13275e3c52c16d0d2c1eaf5777337

Git commit d928627261fac01fb32ec4f0cdabe7e838e09a34 by GitHub (on behalf of Florian Hahn) on 10/08/2026 at 10:40..
[VPlan] Cost truncated widened inductions via ::computeCost. (#212786)

Follow-up to https://github.com/llvm/llvm-project/pull/202232 to also
compute costs for truncated inductions in ::computeCost, removing the
fallback to the legacy cost model unless the loop is fully unrolled.

Note that this changes vectorization decisions in both direction, e.g.
* now vectorized `@tail_predicate_without_optsize`: legacy costs <16 x
i64>, whereas we generate a narrow IV <16 x i8>, which is much cheaper
* no longer vectorized `@second_lshr_operand_zero_via_scev()`: we
generate 2 IVs (one truncated and one not truncated), which is more
expensive than the single IV LV assumes (note that previously we would
ignore the cost of the trunc in the cost computation, because the trunc
was replaced by the wide truncated IV, which was assumed free.

Both cases are due to more accurate cost computations.

PR: https://github.com/llvm/llvm-project/pull/212786
https://invent.kde.org/qt/clang/llvm/-/commit/d928627261fac01fb32ec4f0cdabe7e838e09a34

Git commit c6a18ac34dc73ac9e2cdddf28a64860ef24d706b by GitHub (on behalf of Zhiheng Xie) on 10/08/2026 at 10:54..
[AArch64] Add initial sched model for hip12 (#212935)

This patch adds initial sched model for Hisilicon's hip12 core (Kunpeng
950 processor).
https://invent.kde.org/qt/clang/llvm/-/commit/c6a18ac34dc73ac9e2cdddf28a64860ef24d706b

Git commit 3027f328459a95bf87abd26f72024c59490023bd by GitHub (on behalf of Ramkumar Ramachandra) on 10/08/2026 at 11:01..
[LV] Avoid adding stray predicates in isConsecutivePtr (#213662)

If the absolute value of Stride is not unit, avoid adding stray SCEV
predicates.
https://invent.kde.org/qt/clang/llvm/-/commit/3027f328459a95bf87abd26f72024c59490023bd

Git commit 794aa0fd923acc744f7086d2c77a336dcca6256d by GitHub (on behalf of 曾鈜寬 Tseng Hung Kuan) on 10/08/2026 at 11:09..
[APFloat] Don't turn a Float8E8M0FNU NaN into an Inf on conversion (#214919)

`Float8E8M0FNU` has a precision of 1, so it stores no significand bits
and its NaN carries no payload. `IEEEFloat::convert` shifts the (empty)
significand into the target format, which leaves the NaN exponent with
an all-zero significand — and that is the encoding of an infinity in any
format that has infinities.

The `APFloat` object still reports `fcNaN`, so `isNaN()` returns true,
but `bitcastToAPInt()` hands back Inf bits. Anything that stores the bit
pattern rather than the object — `ConstantFP`, MLIR's `FloatAttr` —
therefore ends up with an infinity.

In MLIR this shows up when folding `arith.extf` on an `f8E8M0FNU`
constant. The OCP MXFP spec uses the all-ones encoding as the scale of
an invalid block, so this silently replaces "this block is invalid" with
a value that poisons everything it is multiplied into:

```mlir
func.func @e8m0_nan_to_f32() -> f32 {
  %c = arith.constant 0xFF : f8E8M0FNU
  %0 = arith.extf %c : f8E8M0FNU to f32
  return %0 : f32
}
```

```
$ mlir-opt x.mlir -canonicalize
%cst = arith.constant 0x7F800000 : f32     // +Inf, not a NaN
```

f16 gives `0x7C00`, bf16 `0x7F80` and f64 `0x7FF0000000000000` — all Inf
encodings. `convert` reports `opOK` with `losesInfo == false` in every
case.

`Float8E8M0FNU` is the only semantics in the table with `precision ==
1`, so this is the only source format affected. The fix creates a new
NaN in the target semantics when the source has no significand, next to
the existing fix-up for `fltNanEncoding::NegativeZero` sources, which
handles the analogous NaN-to-`-Inf` case.

Verification: exhaustively over all 256 `Float8E8M0FNU` values against
f16, bf16, f32, f64 and f128, checking that the category survives, that
a NaN never comes out as an Inf, that the stored bit pattern read back
through the target semantics is still a NaN, and that finite scales
round-trip unchanged where the target's exponent range allows it.
Reverting the `APFloat.cpp` hunk makes the new unit test fail.
https://invent.kde.org/qt/clang/llvm/-/commit/794aa0fd923acc744f7086d2c77a336dcca6256d

Git commit b97d8b20b7ba2f3bb18a12974f1e97c7ec158ac3 by GitHub (on behalf of Ankit Kumar Tiwari) on 10/08/2026 at 11:10..
[LoopVectorize][X86] Improve libmvec SSE/AVX/AVX-512 test coverage (#211863)

This PR updates the libmvec loop vectorization tests to use `-force-vector-width` instead of hardcoded loop metadata.

Fixes #211532
https://invent.kde.org/qt/clang/llvm/-/commit/b97d8b20b7ba2f3bb18a12974f1e97c7ec158ac3
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.