[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/jeanPerier/merge_memory_passes_3'.
Changed from 5ef372b5aa2bbad091251685bd5f95e147ac9eb9 to 922d6396f261735e92f3ab6168de616280f38278
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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/commit/ebc5778e5dc9e195311911595c0b1a415f807c7f

Git commit 922d6396f261735e92f3ab6168de616280f38278 by Jean Perier (on behalf of root) on 29/07/2026 at 09:28..
[flang] Wire allocation-placement into the optimizer pipeline (experimental)

Add a hidden -enable-allocation-placement flag that, when set, replaces the
stack-arrays and memory-allocation-opt passes in the default FIR optimizer
pipeline with the unified allocation-placement pass. The flag is off by
default, so the legacy passes remain the default path and behavior is
unchanged.

When enabled, the pass runs with its default byte-size thresholds; the
-fstack-arrays strategy is forwarded through the new stackArrays option.
https://invent.kde.org/qt/clang/llvm-project/-/commit/922d6396f261735e92f3ab6168de616280f38278
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.