[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 c2fa4128681863d92b2fe1615beb73e2ed62876f to 9c9e12c80a421d6454c49869fdf14aa78d11078b
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 ab993800519301853d4dfebcf4aa454d95938ee4 by GitHub (on behalf of AZero13) on 29/07/2026 at 05:17..
[X86] Fix redundant zeroing operations when casting ints to FP vectors (#212065)
https://invent.kde.org/qt/clang/llvm/-/commit/ab993800519301853d4dfebcf4aa454d95938ee4

Git commit 4e326b492aadea4b65f19b5581b0b3e52e8aaed3 by GitHub (on behalf of Fangrui Song) on 29/07/2026 at 05:18..
[BFI] Remove redundant getHeaderIndex lookup in adjustLoopHeaderMass. NFC (#212679)

getHeaderIndex(Loop.Nodes[H]) is H.
https://invent.kde.org/qt/clang/llvm/-/commit/4e326b492aadea4b65f19b5581b0b3e52e8aaed3

Git commit cf8b0ad96a57570695fba02013590939ffe36af9 by GitHub (on behalf of Anutosh Bhat) on 29/07/2026 at 05:24..
[WebAssembly] Fix v8i16-to-v8f32 uitofp cost (#212501)

I think there was a wrong duplication here. The WebAssembly SIMD
conversion cost table accidentally duplicated the
`UINT_TO_FP` entry for `v8i8` to `v8f32`. As a result, the unsigned
`v8i16` to `v8f32` conversion missed the target-specific table entry and
fell back to the generic cost of 5 instead of the intended cost of 10.

I've added ` llvm/test/Analysis/CostModel/WebAssembly/cast.ll` which I
think is good here as it would help test other casting errors in the
future too.
https://invent.kde.org/qt/clang/llvm/-/commit/cf8b0ad96a57570695fba02013590939ffe36af9

Git commit 40f95afe42db06e2f4226353039de96d66b5d18e by GitHub (on behalf of forking-google-bazel-bot[bot]) on 29/07/2026 at 06:11..
[Bazel] Fixes c2fa412 (#212688)

This fixes c2fa4128681863d92b2fe1615beb73e2ed62876f (#212353).

Buildkite error link:
https://buildkite.com/llvm-project/upstream-bazel/builds?commit=c2fa4128681863d92b2fe1615beb73e2ed62876f

Co-authored-by: Google Bazel Bot <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/40f95afe42db06e2f4226353039de96d66b5d18e

Git commit f4382bedc245a22ea7c354d08eb13543166a5f0d by GitHub (on behalf of dong jianqiang) on 29/07/2026 at 06:16..
[ARM] Exclude TLS symbols from the .reloc/R_ARM_REL32 path (#212549)

The .reloc branch in emitMachineConstantPoolValue fired for any
isWeakForLinker() + isDSOLocal() symbol, including TLS (thread_local)
weak symbols. R_ARM_REL32 is wrong for TLS: TLS symbols need
TLS-specific relocations (R_ARM_TLS_GD32 etc.). Using R_ARM_REL32 for a
TLS symbol produces a wrong address at runtime.

This broke the 2-stage ARM 32-bit buildbots: stage 1 (with the .reloc
branch) miscompiled stage 2's BPF codegen (BTFDebug.cpp references
llvm::sys::sandbox::Enabled, an inline thread_local weak variable),
causing a SIGSEGV in the BPF Assembly Printer.

Add a regression test (tls_weak_var in elf-preemption.ll) verifying that
TLS weak symbols get TLSGD/TPOFF, not R_ARM_REL32.

Fix #212545
https://invent.kde.org/qt/clang/llvm/-/commit/f4382bedc245a22ea7c354d08eb13543166a5f0d

Git commit ad300a7712f3506e702501097ddfe6b322cfa0fb by GitHub (on behalf of Marc Auberer) on 29/07/2026 at 06:34..
[IR] Remove deprecated InsertPosition(Instruction*) constructor (#212640)

This implicit constructor has been marked deprecated since almost 2
years in favor of constructing an InsertPosition from a
BasicBlock::iterator.
Remove it now that in-tree users no longer rely on it.

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

Git commit 9cdb4219e8edb617076a8c1a118cce119179e288 by GitHub (on behalf of lorenzo chelini) on 29/07/2026 at 06:34..
[MLIR] Validate directly parsed optional operand types (#212493)

Commit 6c51938067fa ([MLIR] Guard optional operand resolution in
generated op parsers) guarded resolution of every optional operand to
avoid indexing an empty inferred type range. The guard also skipped
resolveOperands when an optional operand was absent but an independently
optional type directive was present. This accepted malformed assembly
and silently discarded the orphan type when printing the operation.

Keep the guard for inferred type resolutions, which may access an empty
optional type vector, but always resolve directly parsed type ranges so
resolveOperands validates operand/type cardinality. Add coverage for
both valid forms and a type-only negative reproducer.
https://invent.kde.org/qt/clang/llvm/-/commit/9cdb4219e8edb617076a8c1a118cce119179e288

Git commit 52f6c88c2c1b6f0c10b9c8fb09ec35e147c593e3 by GitHub (on behalf of David Green) on 29/07/2026 at 06:40..
[Codegen] Replace any_of with is_contained. NFC (#212289)

A new operator== for SVT and EVT was apparently needed with reverse
operands.
https://invent.kde.org/qt/clang/llvm/-/commit/52f6c88c2c1b6f0c10b9c8fb09ec35e147c593e3

Git commit 3df3102da5c0ebb5d32a9146f6b0aec925bc4742 by GitHub (on behalf of Fangrui Song) on 29/07/2026 at 07:01..
[test] Migrate Hexagon/PowerPC thunk tests to the default thunk order (#212693)

Drop -z nosort-thunks (added by #211721 to keep creation order) and
update expectations to the default order: forward thunks sorted by
descending destination.
https://invent.kde.org/qt/clang/llvm/-/commit/3df3102da5c0ebb5d32a9146f6b0aec925bc4742

Git commit a7b2a20f01681186bb6872c077a52e22632db9ad by GitHub (on behalf of Timm Baeder) on 29/07/2026 at 07:03..
[clang] Improve diagnostics around constexpr limits (#212091)

1) Mention the limit in the "constexpr evaluation hit maximum step
limit" diagnostic as well
2) Move the "use -fconstexpr-steps" instruction to its own note so we
can reuse it for two different diagnostics

For
```c++
struct S {
  constexpr S() {}
};
constexpr S foo[1'500'000] = {};
```
we used to emit
```console
array.cpp:1028:13: error: constexpr variable 'foo' must be initialized by a constant expression
 1028 | constexpr S foo[1'500'000] = {};
      |             ^                ~~
array.cpp:1026:17: note: constexpr evaluation hit maximum step limit; possible infinite loop?
 1026 |   constexpr S() {}
      |                 ^
array.cpp:1028:31: note: in call to 'S()'
 1028 | constexpr S foo[1'500'000] = {};
      |                               ^
```

and now we emit
```console
array.cpp:1028:13: error: constexpr variable 'foo' must be initialized by a constant expression
 1028 | constexpr S foo[1'500'000] = {};
      |             ^                ~~
array.cpp:1026:17: note: constexpr evaluation hit maximum step limit of 1048576; possible infinite loop?
 1026 |   constexpr S() {}
      |                 ^
array.cpp:1028:31: note: in call to 'S()'
 1028 | constexpr S foo[1'500'000] = {};
      |                               ^
array.cpp:1026:17: note: use -fconstexpr-steps= to increase this limit (=0 will remove the limit)
 1026 |   constexpr S() {}
```
https://invent.kde.org/qt/clang/llvm/-/commit/a7b2a20f01681186bb6872c077a52e22632db9ad

Git commit 8c5193b41f2f1f5fb704a70e1f4bb7c0153d2d9d by GitHub (on behalf of Raul Tambre) on 29/07/2026 at 07:08..
[lldb][test] Use C++ frontend for building C++ test file (#212611)
https://invent.kde.org/qt/clang/llvm/-/commit/8c5193b41f2f1f5fb704a70e1f4bb7c0153d2d9d

Git commit 9ba969c46204e4723cf4b5720a34fc537ce2d458 by GitHub (on behalf of Arseniy Obolenskiy) on 29/07/2026 at 07:47..
[SPIR-V] Reject builtin calls if mangled argument types do not match the IR (#208152)
https://invent.kde.org/qt/clang/llvm/-/commit/9ba969c46204e4723cf4b5720a34fc537ce2d458

Git commit 83ed1d0925ef5523e3be4f182db1df712ed490fa by GitHub (on behalf of Arseniy Obolenskiy) on 29/07/2026 at 07:47..
[NFC][SPIR-V] Add constrainSelectedInstRegOperands helper to dedup repeating pattern in global registry (#208703)
https://invent.kde.org/qt/clang/llvm/-/commit/83ed1d0925ef5523e3be4f182db1df712ed490fa

Git commit f193d19d2127023966cbeb6ccf1487f975f53acc by GitHub (on behalf of Arseniy Obolenskiy) on 29/07/2026 at 07:48..
[SPIR-V] Fix OpDecorate insertion point for non-PHI defs in decorateUsesAsNonUniform (#212524)

Inserting before the defining instruction placed the decoration ahead of
its own operand, breaking dominance for the loop-carried case

Fix machine code errors from
https://github.com/llvm/llvm-project/pull/208224#issuecomment-5095074660
https://invent.kde.org/qt/clang/llvm/-/commit/f193d19d2127023966cbeb6ccf1487f975f53acc

Git commit b2b5c13f69e4cfcba339967e0c16b06b081b5e2e by GitHub (on behalf of Zeyi Xu) on 29/07/2026 at 07:54..
[clang-tidy][docs] Fix broken redundant-void-arg documentation. NFC. (#212692)
https://invent.kde.org/qt/clang/llvm/-/commit/b2b5c13f69e4cfcba339967e0c16b06b081b5e2e

Git commit acd22eec9e79b69515aa2204dc96dcfa3ff0d387 by GitHub (on behalf of Timm Baeder) on 29/07/2026 at 08:02..
[clang][bytecode][NFC] Add Record::findField to look up fields by offset (#212697)
https://invent.kde.org/qt/clang/llvm/-/commit/acd22eec9e79b69515aa2204dc96dcfa3ff0d387

Git commit 9cd13c11bacc9a5b83640a7168ab0f51160e4ee0 by GitHub (on behalf of 222rohan) on 29/07/2026 at 08:22..
[X86] Remove TuningFastSHLDRotate from BMI2 targets (#211217)

This flag has no effect at `x86-64-v3` or `v4`. It only enables a pseudo
that lowers `rotl`/`rotr` by immediate to `shld $imm, %reg, %reg`, but a
higher-priority `RORX` pattern matches the same case and always wins the
iSel tie.

Both patterns match `rotl(GR64, imm)`; only their `AddedComplexity`
differs:

```
// X86InstrShiftRotate.td:507 -- SHLD-rotate pseudo, complexity 5
let Predicates = [HasFastSHLDRotate], AddedComplexity = 5, ... in {
  def SHLDROT64ri : ... [(set GR64:$dst, (rotl GR64:$src1, (i8 imm:$shamt)))]>;
}

// X86InstrShiftRotate.td:602 -- RORX pattern, complexity 10, only needs BMI2
let AddedComplexity = 10 in {
  def : Pat<(rotl GR64:$src, (i8 imm:$shamt)),
            (RORX64ri GR64:$src, (ROT64L2R_imm8 imm:$shamt))>;
}
```
LLVM's iSel always picks `RORX`, and it only requires BMI2, which is
part of `x86-64-v3` and up, so it is picked unconditionally on every
v3/v4 build regardless of `TuningFastSHLDRotate`.

No codegen change; existing lit tests unaffected.
https://invent.kde.org/qt/clang/llvm/-/commit/9cd13c11bacc9a5b83640a7168ab0f51160e4ee0

Git commit 17df4290daed63acd8171af570fa8b6190d758f0 by GitHub (on behalf of Timm Baeder) on 29/07/2026 at 08:39..
[clang][bytecode][NFC] Add CHECK markers for functions in test (#212699)

We aren't testing the existence of the function in the output here, but
without these markers, debugging test failures here can become very
cumbersome.
https://invent.kde.org/qt/clang/llvm/-/commit/17df4290daed63acd8171af570fa8b6190d758f0

Git commit a6614ee07b916785321eb046d525374a022b8ebb by GitHub (on behalf of StoeckOverflow) on 29/07/2026 at 08:50..
[APINotes] Diagnose invalid Where.Parameters selectors (#209408)

This PR adds diagnostics for exact `Where.Parameters` selectors on top
of the existing parsing, serialization, and Sema matching support.

It diagnoses duplicate exact selectors during API notes conversion,
including duplicate `Where.Parameters: []`, while still allowing broad
name-only entries and same-name entries with different selectors.

It also adds reader/Sema support to warn under `-Wapinotes` when an
exact selector in API notes does not match any visible overload. The
reader can now enumerate stored exact selectors for global functions and
C++ methods, and Sema compares those against the selector candidates
derived from the visible overload set.

The diagnostic path follows the same matching policy as Sema, including
the desugared alias fallback, so valid matched selectors do not produce
false warnings.

Tests cover duplicate selector errors, unmatched selector warnings for
globals and C++ methods, broad-plus-exact coexistence, exact notes not
silently applying on mismatch, and no false warnings for matched or
alias-fallback selectors.

Reviewers: @Xazax-hun @j-hui @egorzhdan

---------

Co-authored-by: John Hui <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/a6614ee07b916785321eb046d525374a022b8ebb

Git commit 005c18eac0a70158c2db4611bf824af6e0bc80ac by GitHub (on behalf of jeanPerier) on 29/07/2026 at 09:01..
[flang] Add policy-driven allocation-placement pass - memory passes unification [2/5] (#210742)

Introduce a new function-level pass, allocation-placement, that unifies
the stack/heap placement decisions currently split between the
stack-arrays and memory-allocation-opt passes. For each array allocation
it consults a policy to decide whether it should live on the stack
(fir.alloca) or the heap (fir.allocmem) and rewrites it accordingly,
reusing fir::replaceAllocas for stack-to-heap and the StackArrays
analysis/rewrite for heap-to-stack (so heap-to-stack only happens where
it is provably safe).

The default policy (AllocationPlacementPolicy.h) is threshold-driven:
- small constant-size arrays go on the stack within a per-function stack
budget, otherwise on the heap;
- big constant-size arrays: user variables stay on the stack,
temporaries go on the heap;
  - runtime-sized arrays go on the heap;
- an aggressive mode places all arrays on the stack (best effort). User
variables are distinguished from compiler temporaries via the presence
of a uniqued name. A hook lets downstream users override the thresholds
per allocation (e.g. for device routines or parallel regions).

The pass is not wired into any pipeline yet; it is reachable through
fir-opt and covered by isolated tests.

Assisted-by: AI
https://invent.kde.org/qt/clang/llvm/-/commit/005c18eac0a70158c2db4611bf824af6e0bc80ac

Git commit ebc5778e5dc9e195311911595c0b1a415f807c7f by GitHub (on behalf of Weronika Lewandowska) on 29/07/2026 at 09:13..
[Offload] Enable offload test on Windows (#212480)

Description:
This change enables the offload test build on Windows by adding
compatibility guards around libomptarget test suites.

Why:
libomptarget is not available on Windows. Without these guards, CMake
fails when referencing the missing omptarget target. With these guards,
Windows builds complete successfully and run available tests (using
check-offload-unit), while Linux/macOS builds remain unaffected.
https://invent.kde.org/qt/clang/llvm/-/commit/ebc5778e5dc9e195311911595c0b1a415f807c7f

Git commit b95ce5ed68edad82e766ee8a7e9dae7809bc84dc by GitHub (on behalf of Sohaib Iftikhar) on 29/07/2026 at 09:30..
[LLVM] Disambiguate MVT and SVT comparisons (#212711)

[LLVM] Disambiguate MVT and SVT comparisons

Without this:
```
error: use of overloaded operator '==' is ambiguous (with operand types 'MVT' and 'llvm::MVT::SimpleValueType')
  167 |       if (VT == MVT::Untyped)
      |           ~~ ^  ~~~~~~~~~~~~
llvm/include/llvm/CodeGenTypes/MachineValueType.h:62:10: note: candidate function
   62 |     bool operator==(const MVT& S) const { return SimpleTy == S.SimpleTy; }
      |          ^
llvm/include/llvm/CodeGen/ValueTypes.h:598:15: note: candidate function (with reversed parameter order)
  598 |   inline bool operator==(MVT::SimpleValueType SVT, EVT VT) { return VT == SVT; }
      |               ^
1 error generated.
```

Fixes 52f6c88c2c1b6f0c10b9c8fb09ec35e147c593e3
https://invent.kde.org/qt/clang/llvm/-/commit/b95ce5ed68edad82e766ee8a7e9dae7809bc84dc

Git commit 61d6e494e97a8fda6946291fd3bc6bb648c86e93 by GitHub (on behalf of vsimion26) on 29/07/2026 at 09:39..
QuantileType relax quantileType conditions and inheritance issue (#204793)

# Recategorize QuantileType as Storage Format, Not Quantization Scheme

## Summary

Reclassify `QuantileType` from inheriting `QuantizedType` to functioning
as a pure storage type.

## Motivation

### QuantileType is a Storage Format, Not a Quantization Scheme

After careful consideration, there was a conclusion reached that
**QuantileType should not be registered as a subtype of QuantizedType**.
The architectural distinction is critical:

- **QuantizedType** represents different quantization schemes (uniform,
per-axis, etc.), semantic operations that map values into a
lower-precision domain
- **QuantileType** is purely a **storage format** that specifies how to
interpret indices within a lookup table (LUT)

QuantileType was never meant to function as a quantization scheme on its
own. Instead, its purpose is to indicate **how to interpret indices
based on the given LUT**. It is an orthogonal concern to quantization
semantics; it describes data organization, not mathematical
transformation.

### Relaxed Type Conditions

The previous implementation restricted the LUT values to float types
only. However, float types are not the only types that can exist inside
a LUT, integer types are valid as well.

This PR removes the type restriction, allowing **both floating-point and
integer-based LUT interpretations** to coexist, better matching actual
use cases.

## Changes

- **Removed**: Incorrect inheritance of `QuantizedType` by
`QuantileType`
- **Relaxed**: Type constraints to accept both float and integer LUT
value types
https://invent.kde.org/qt/clang/llvm/-/commit/61d6e494e97a8fda6946291fd3bc6bb648c86e93

Git commit e062a29cf865bb7cadea6cb605c9f3515e5b883f by GitHub (on behalf of Yordan Vásquez) on 29/07/2026 at 09:41..
[libc++] Mark LWG3133 as Complete and add valarray operator[] safety tests (#208145)

This verifies that libc++ has implemented the resolution of LWG3133,
which modernizes the requirements on `T` for `std::complex<T>` and
`std::valarray<T>` in [numeric.requirements].
- No code changes were needed for `std::valarray<T>`: its `operator[]`
already indexes through a raw pointer and never relies on a
user-overloadable `operator&`, so it already conforms to the revised
wording.
- Added o`perator_hijacker`-based tests to `valarray`'s
`access.pass.cpp`/`const_access.pass.cpp`, confirming `operator[]`
doesn't rely on a user-overloadable `operator&`.
https://invent.kde.org/qt/clang/llvm/-/commit/e062a29cf865bb7cadea6cb605c9f3515e5b883f

Git commit 0cce7a09237402359113036e9fe6469301e53a9c by GitHub (on behalf of Petar Avramovic) on 29/07/2026 at 09:54..
AMDGPU/GlobalISel: Fix Vcc reg bank apply method for sgpr i1 input (#212532)

Need to clean up high bits on sgpr bool use, simlar to Sgpr32AExtBoolInReg.
G_AMDGPU_COPY_VCC_SCC assumes clean (zero) high bits in sgpr i32 input.
This should be combined away in most cases, for example if input is result
of a compare. But should stay for example for truncated input from s_load.
https://invent.kde.org/qt/clang/llvm/-/commit/0cce7a09237402359113036e9fe6469301e53a9c

Git commit 9df6ca12f24bd35b02f5eae7a27cc92533482e03 by GitHub (on behalf of Paul Walker) on 29/07/2026 at 10:09..
[LLVM][CodeGen][SVE] Add ElementSize information to fp compare, continuous/replicating load and store instructions (#204821)

This information was originally used to implement MOVPFRX support.
However https://github.com/llvm/llvm-project/pull/204820 uses the same
information to determine which bits of an instruction's predicate
operand are used so that PTRUE instructions can be coalesced.
MOVPRFXable instructions are a subset of all predicated instructions, so
this patch extends some non-MOVPRFXable instructions with ElementSize
information.
https://invent.kde.org/qt/clang/llvm/-/commit/9df6ca12f24bd35b02f5eae7a27cc92533482e03

Git commit 3120980d24f67f5754742c1dc8865e30307529ce by GitHub (on behalf of Hassnaa Hamdi) on 29/07/2026 at 10:28..
[LV][NFC]: Use CostCtx.CM instead of CM in precomputeCosts (#212287)
https://invent.kde.org/qt/clang/llvm/-/commit/3120980d24f67f5754742c1dc8865e30307529ce

Git commit 462602de4245031e363b80a208f595826e738831 by GitHub (on behalf of Jay Foad) on 29/07/2026 at 10:31..
[AMDGPU] Fix incorrect VM_VSRC simplification after async instruction (#212481)

Add ASYNC_CNT to the list of VMEM counters. The implication is that only
if all these counters are zero can we know that there are no outstanding
VMEM instructions, so VM_VSRC must be zero.
https://invent.kde.org/qt/clang/llvm/-/commit/462602de4245031e363b80a208f595826e738831

Git commit e7db113dca5582f512e95053dd1b770f594ae2e8 by GitHub (on behalf of Arseniy Obolenskiy) on 29/07/2026 at 10:35..
[AMDGPU] Remove redundant AGPR/VGPR register class verification (#212721)
https://invent.kde.org/qt/clang/llvm/-/commit/e7db113dca5582f512e95053dd1b770f594ae2e8

Git commit 3757c5d331d5d4781a7325ea890b2754c6dad5bb by GitHub (on behalf of Cullen Rhodes) on 29/07/2026 at 11:06..
[AArch64] Mark FIXED_REGS register class as non-allocatable (#212250)

FIXED_REGS is not used for register allocation, but since it overlaps
the GPR classes via FP and SP, TableGen merges VG and FFR into the GPR
pressure set, giving it a static limit of 35.

The underlying GPR32all class has 33 registers: W0-W30, WZR, and WSP.
WZR and WSP are always reserved, leaving up to 31 allocatable registers
depending on whether W29 (FP) and W30 (LR) are reserved.

Marking FIXED_REGS non-allocatable removes VG and FFR from the pressure
set, reducing its static limit from 35 to 33 and its dynamic limit from
33 to 31. The corrected limit changes scheduling decisions made by the
register-pressure heuristics, which explains the test churn.

Assisted-by: codex
https://invent.kde.org/qt/clang/llvm/-/commit/3757c5d331d5d4781a7325ea890b2754c6dad5bb

Git commit 9c9e12c80a421d6454c49869fdf14aa78d11078b by GitHub (on behalf of Jay Foad) on 29/07/2026 at 11:10..
[AMDGPU] Fix typos SGRP and VGRP. NFC. (#212732)
https://invent.kde.org/qt/clang/llvm/-/commit/9c9e12c80a421d6454c49869fdf14aa78d11078b
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.