[qt/clang/llvm-project]: Summary of bulk changes made
KDE Git Services - Bulk Change <[email protected]> Tue, 4 Aug 2026 18:14:49 +0000 (UTC)
| 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/release/23.x'.
Changed from 50782acac8249a6ff65e50f6551f921a6e25063d to fa70bdd819bbb0e2b22f20ad7e79edfcbfd4a0cd
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 f99b28997f10676e769edf912947f494f5ddef20 by Douglas Yung (on behalf of Ebuka Ezike) on 04/08/2026 at 12:28..
[lldb] Fix crash on creating string error (#212503)
It crashes because the `default` error string may not be a format string
compared to the `fallback` error string
(cherry picked from commit 29bc0749034c4f2bda0752360ecacd4e89d7439c)
https://invent.kde.org/qt/clang/llvm-project/-/commit/f99b28997f10676e769edf912947f494f5ddef20
Git commit b913248f32a99d16cc7542b54a804bd0b9eb33e1 by Douglas Yung (on behalf of Ryotaro Kasuga) on 04/08/2026 at 12:29..
[LoopInterchange] Prevent the transformation stage from stopping partway (#205564)
As mentioned in #205562, there are cases where the transformation stage
in LoopInterchange stops partway through, and the output IR ends up
partially modified rather than interchanged. Notably, the interchange is
recognized as having succeeded internally even in such cases. Apparently
this happens not to cause any miscompiles at the moment, but it is
clearly dangerous.
This patch removes the early exit in the transformation phase. We cannot
simply remove it, which checks for the presence of a unique successor of
the inner loop header, because there is a case where the header actually
has multiple successors. To avoid that situation, this patch changes the
code to call SplitBlock on the inner loop header unconditionally.
The test changes fall into two categories: some are simply due to newly
added redundant BBs. In the others, the expected interchanges are now
applied as intended, whereas previously the transformation failed and
the interchanges were not applied before this patch.
(cherry picked from commit ca52c1b3abbadf829598872b7dded2bca2fd50c0)
https://invent.kde.org/qt/clang/llvm-project/-/commit/b913248f32a99d16cc7542b54a804bd0b9eb33e1
Git commit 0f2432581d34b31672bb6b9a659a73acd368fff5 by Douglas Yung (on behalf of Jacek Caban) on 04/08/2026 at 12:30..
[LLD][COFF] Replace ARM64EC TLS directory chunks with native chunks when available (#212845)
On ARM64X targets, CRT provides separate TLS directory chunks, expecting
the linker to sort it out. TLS directory uses _tls_start and _tls_end
symbols to reference .tls section. Those symbols use section sorting to
ensure that they are emitted at the start and end of .tls section, but that's
not enough when we have two separate chunks for views: only one of them
can really be the first one. Following MSVC, merge those chunks instead so
that both symbol tables point to the same chunk.
Additionally apply the same logic to _tls_used and _tls_index. This
allows entire TLS directory to be shared between EC and native views. To
achieve that, CRT additionally needs to mark each TLS callback with
-arm64xsameaddress. This matches how MSVC linker and libraries work, but
it requires EC and native views to use the same set of TLS callbacks. We
may emit separate TLS directories in the future to make it more robust.
(cherry picked from commit e096d2f60dbc6cab991d5c02a5f7125a6dc694dc)
https://invent.kde.org/qt/clang/llvm-project/-/commit/0f2432581d34b31672bb6b9a659a73acd368fff5
Git commit c4ace926153ecd1c93f598e7b908b8b3b3975530 by Douglas Yung (on behalf of Rainer Orth) on 04/08/2026 at 12:31..
[clang][Driver] Fix libc++ include path on NetBSD (#212716)
`clang++` defaults to `-stdlib=libc++` on NetBSD. When building with
both `clang` and `libcxx` included, the freshly built `clang++` fails to
find `<__config_site>`:
```
In file included from /usr/include/strings.h:68:
In file included from bin/../include/c++/v1/string.h:57:
bin/../include/c++/v1/__config:13:10: fatal
error: '__config_site' file not found
13 | #include <__config_site>
| ^~~~~~~~~~~~~~~
```
The file is present in `include/<triplet>/c++/v1`, but that isn't
searched by default. NetBSD has its own version of addLibCxxIncludePaths
which misses that directory.
This patch removes `NetBSD::addLibCxxIncludePaths` in favour of the
generic version in `Gnu.cpp`. The current code also adds
`/usr/include/c++`, although this directory only contains empty
directories in a default installation. It is only used when a bundled
version of LLVM is installed, which is not usually the case, and even
then contains a static version of `__config_site` that only applies to
`libcxxrt`.
Tested on `amd64-pc-netbsd10.1`, `x86_64-pc-solaris2.11`,
`x86_64-pc-linux-gnu`, and `x86_64-pc-freebsd15.1`.
(cherry picked from commit 9a19c7750f949c979372ba1d2eec8a7a40061aef)
https://invent.kde.org/qt/clang/llvm-project/-/commit/c4ace926153ecd1c93f598e7b908b8b3b3975530
Git commit 1e94aa5548bdb4528e23904baaa6a1d08d703885 by Douglas Yung (on behalf of Nikolas Klauser) on 04/08/2026 at 12:31..
release/23.x: [libc++] Fix ungetc failing after xsgetn (#210951)
Backport 455ef3684fae3273b3423bb0229e33584745c6cc and 76140a666d18b940597bf73362d4101af0247ea6
https://invent.kde.org/qt/clang/llvm-project/-/commit/1e94aa5548bdb4528e23904baaa6a1d08d703885
Git commit 8ae884c1285b17f0145f084303dbb937c9a37209 by Douglas Yung (on behalf of Ties Stuij) on 04/08/2026 at 12:32..
[ARM][MVE] Match canonical saturating negation patterns (#213085)
InstCombine pull request
https://github.com/llvm/llvm-project/pull/194519 canonicalized the
saturating negation idiom to
an llvm.ssub.sat operation. For the ARM backend we only recognized the
original
select and subtract pattern, causing vector absolute values to expand to
VQSUB
plus a compare and select instead of VQABS.
In this patch we teach the VQABS and VQNEG patterns to recognize this
ssub.sat
form.
(cherry picked from commit c99e6752b9f9e1867af88c07ee44f837bc6e4311)
https://invent.kde.org/qt/clang/llvm-project/-/commit/8ae884c1285b17f0145f084303dbb937c9a37209
Git commit 2629bf96a7c92c9708baba5c09ce5e82fad581a5 by Douglas Yung (on behalf of Feng Zou) on 04/08/2026 at 12:33..
[X86][APX] Fix per-function V3 unwind for EGPR functions on Windows x64 (#212924)
A function that saves a callee-saved EGPR (R16-R31) cannot be encoded with V1/V2 unwind info, so it must use V3 even when the module default stays on V1/V2 (e.g. an APX clone created by auto-dispatch alongside a baseline generic clone). The previous code rejected such functions with a recoverable backend diagnostic ("EGPR (R16-R31) requires V3 unwind info on Windows x64") instead of emitting valid V3 unwind info.
Introduce a single shared predicate, requiresWinX64UnwindV3(MF), that returns true when the whole module is in V3 mode, or when the function needs an unwind table and may use EGPR. It is consumed by X86FrameLowering (SEH prolog/epilog layout), the X86WinEHUnwindV2 pass (which skips such functions), and the X86WinEHUnwindV3 pass (which stamps a per-function .seh_unwindversion 3 on every WinEH frame -- the entry block and each funclet). Also widen the SEH_UnwindVersion pseudo operand from i1imm to i8imm since it holds 1, 2 or 3.
(cherry picked from commit 9466be2c87689a07c9a171f24cb5c9b0c2f0cda8)
https://invent.kde.org/qt/clang/llvm-project/-/commit/2629bf96a7c92c9708baba5c09ce5e82fad581a5
Git commit fa0232af8b06ea5247a2abf49c11bbd558dd12e1 by Douglas Yung (on behalf of Garvit Gupta) on 04/08/2026 at 12:34..
[RISCV] Reduce spill/reload pairs when Xqcilo extension is enabled (#212807)
[RISCV] Reduce spill/reload pairs when Xqcilo extension is enabled
Currently, `SelectAddrRegImm26` calls `SelectAddrFrameIndex` first,
causing bare frame-index loads (offset 0) to select 48-bit loads/stores at
ISel. Due to `AddedComplexity=2` on the QC48LdPat patterns, the wide
opcode won over the standard LW/SW even though the resolved frame offset
typically fits simm12.
This led to more spills and reloads in functions which are under high
register pressure because 48-bit loads and stores are not marked easily
rematerializable. Also, simply adding 48-bit loads and stores to
`isLoadFromStackSlot/isStoreToStackSlot` doesn't solve the regression
for the multi call case and only by making Isel produce the plain
32/64-bit loads and store opcodes as the baseline does RA behave
identically.
Therefor this PR fixes the issue by:
-Remove the `SelectAddrFrameIndex` call from SelectAddrRegImm26. Bare frame
indices now fall through to standard LW/SW selection at ISel, where RA
recognizes them as rematerializable stack loads.
-Add post-RA promotion in `eliminateFrameIndex`: when a plain LW/SW has a
resolved frame offset that exceeds simm12, promote the opcode to
the corresponding 48-bit load/store opcode and fold the 26-bit offset
directly. This preserves the intended large-offset optimization
without affecting RA decisions.
This solves the code size regression in high register pressure function
introduced by PR #209315
Assisted by Claude
(cherry picked from commit 8b18aa0b1ec2de76d47748a4d13c4de02b4d8580)
https://invent.kde.org/qt/clang/llvm-project/-/commit/fa0232af8b06ea5247a2abf49c11bbd558dd12e1
Git commit fa70bdd819bbb0e2b22f20ad7e79edfcbfd4a0cd by Douglas Yung (on behalf of Tom Stellard) on 04/08/2026 at 14:01..
workflows/require-team-membership: Fix typo (#212686)
(cherry picked from commit e423bace201fd04fd594e7fcd666d559ca12fda3)
https://invent.kde.org/qt/clang/llvm-project/-/commit/fa70bdd819bbb0e2b22f20ad7e79edfcbfd4a0cd