[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/davidspickett/lldb-register-types-for-stack-5'.
Changed from 395b70c5094f12277745b48142e869b2d23dc308 to b004aeaa7f1b78213fd36dda800233279fa2b45a
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 34323ab08e6eed2caff556ecdeae20053cbaaae7 by GitHub (on behalf of Jonas Devlieghere) on 07/08/2026 at 05:21..
[lldb] Fix the lazy initialization of Module's global collections (NFC) (#214630)
Both collections were initialized with a check-then-set on a null
pointer, which is race-y. We can achieve the same thing by initializing
the pointer with the allocation, while retaining the leak.
https://invent.kde.org/qt/clang/llvm/-/commit/34323ab08e6eed2caff556ecdeae20053cbaaae7
Git commit fab90faf86a5846f7ed73c1caf322dcc79a6af5e by GitHub (on behalf of Kane Wang) on 07/08/2026 at 05:36..
[RISCV][GlobalISel] Legalize G_LROUND/G_LLROUND (#213889)
Add legalizer rules so `llvm.lround/llround` lower to`
fcvt.{w,l}.{h,s,d}` with FRM_RMM.
https://invent.kde.org/qt/clang/llvm/-/commit/fab90faf86a5846f7ed73c1caf322dcc79a6af5e
Git commit 424588ce0a14c9a310687424d8f0318553ef3fa7 by GitHub (on behalf of Sam Elliott) on 07/08/2026 at 05:41..
[AsmPrinter] Emit type and size for Constant Pool Entries (#214387)
https://invent.kde.org/qt/clang/llvm/-/commit/424588ce0a14c9a310687424d8f0318553ef3fa7
Git commit 0b5cc577664bbd6e031f93f162d23820e5e90d15 by GitHub (on behalf of Aiden Grossman) on 07/08/2026 at 05:43..
[Target] Add shouldDefaultToNewPM flag
This will allow for tools like clang/flang/llc to default to the NewPM
for targets that request it.
Future patches will update clang/llc and flip it for targets that have
been fully ported but shouldn't have a large blast radius (like Lanai
and MSP430).
Pursuant to
https://discourse.llvm.org/t/rfc-incrementally-enabling-the-newpm-for-codegen/91410/11.
Reviewers: arsenm, vikramRH, aengelke
Pull Request: https://github.com/llvm/llvm-project/pull/214570
https://invent.kde.org/qt/clang/llvm/-/commit/0b5cc577664bbd6e031f93f162d23820e5e90d15
Git commit 9adc2537177d0813301b3eab1bae906735c984a4 by GitHub (on behalf of Jean-Didier PAILLEUX) on 07/08/2026 at 06:06..
[Flang] Coarray allocation, update error for pointer component #193829 (#194651)
The TODO message in `verify()` was not completly displayed, so it has
been replaced by `emitErrorOp`.
In addition, the test in `ConvertVariable` has been updated by adding
pointer direct component case.
Fix #193829
https://invent.kde.org/qt/clang/llvm/-/commit/9adc2537177d0813301b3eab1bae906735c984a4
Git commit 200993f938df80a215a39dea148c239b3be21d0b by GitHub (on behalf of Luke Lau) on 07/08/2026 at 06:06..
[RISCV] Increase cost of vmv.x.s and vfmv.f.s (#214481)
A change landed that enabled SLP vectorization in more places, but it
caused a 16% regression in 508.namd_r on the spacemit-k3:
https://github.com/llvm/llvm-project/issues/214417
The root cause is that we're emitting two vfmv.f.s now which are
generally slow due to the vector->scalar domain crossing:
https://godbolt.org/z/dMo55zPMa
Reciprocal throughput of vmv.x.s/vfmv.f.s is 6 times higher than
vmv.s.x/vfmv.s.f on the spacemit-k3 and 2.5 higher on the P870 according
to https://camel-cdr.github.io/rvv-bench-results/
This PR increases the cost of a vmv.x.s/vfmv.f.s from 1->2, which is
just enough to prevent unprofitable SLP vectorization and fixes the
regression on 508.namd_r.
It also has the bonus side effect of preventing loop vectorization where
we end up scalarizing libcalls, see
llvm/test/Transforms/LoopVectorize/RISCV/tail-folding-call-intrinsics.ll
Fixes #214417
https://invent.kde.org/qt/clang/llvm/-/commit/200993f938df80a215a39dea148c239b3be21d0b
Git commit 5b94e6fbc02604d4407bb1377ab65d0382ef813a by GitHub (on behalf of Kaitlin Peng) on 07/08/2026 at 06:23..
Update `atan2` matrix tests (#214550)
This PR updates the `atan2` matrix sema error test to cover the full set
of argument/type error cases (mirroring `pow_mat-errors.hlsl`). It also
renames two tests to match the `<intrinsic>_mat-<suffix>` convention
that other intrinsics follow.
https://invent.kde.org/qt/clang/llvm/-/commit/5b94e6fbc02604d4407bb1377ab65d0382ef813a
Git commit 44cbd66a3b8aaf3ecd0c8ea06076b4a7cbf774d5 by GitHub (on behalf of David Green) on 07/08/2026 at 06:27..
[AArch64] Add load/store cost model test. NFC (#214648)
These are copied from the X86 tests with some adjustments.
https://invent.kde.org/qt/clang/llvm/-/commit/44cbd66a3b8aaf3ecd0c8ea06076b4a7cbf774d5
Git commit 0b65d8b57c69c4bf5f859d80cc647fdb3f4f9bff by GitHub (on behalf of Kyungtak Woo) on 07/08/2026 at 06:30..
[NFC] Add missing <cmath> continuation (#214641)
I missed a missing import from
https://github.com/llvm/llvm-project/pull/214410, found this failing
downstream
https://invent.kde.org/qt/clang/llvm/-/commit/0b65d8b57c69c4bf5f859d80cc647fdb3f4f9bff
Git commit a26bbdd947da7d820f072252cae8944b897fc7eb by GitHub (on behalf of Aiden Grossman) on 07/08/2026 at 06:31..
[GVNSink] Do not sink @llvm.threadlocal.address (#214582)
Sinking this intrinsic with different arguments requires the use of a
phi node which violates verifier assumptions about the intrinsic. So we
mark it as unable to have operands replaced with variables.
Fixes #214565
https://invent.kde.org/qt/clang/llvm/-/commit/a26bbdd947da7d820f072252cae8944b897fc7eb
Git commit e0c0675a1250117bbe1b4b0fa7f35a1969a74f16 by GitHub (on behalf of Aiden Grossman) on 07/08/2026 at 06:49..
[NFC][DWARF] Prefer addSectionLabel (#214239)
This is a follow-up to a comment on #213128.
addSectionDelta was only called in sites within if statements that would
branch on whether or not split DWARF is enabled and then branching to
either addSectionDelta or addSectionLabel. Instead we can just make
addSectionLabel call addSectionDelta internally if we're in a DwoUnit to
make things simpler.
This is obviously NFC for most cases. For macro info, we were previously
branching on useSplitDWARF which can differ, but only in the case we are
emitting into the skeleton compile unit, which we should not be doing
for macro info.
https://invent.kde.org/qt/clang/llvm/-/commit/e0c0675a1250117bbe1b4b0fa7f35a1969a74f16
Git commit 2a0c57c535edc30f4f3d469542eef10d497db122 by GitHub (on behalf of Cullen Rhodes) on 07/08/2026 at 07:21..
[AArch64][GlobalISel] Fix invalid subregister copies for truncating stores (#213935)
The custom truncating store selector always created a subregister copy
matching the memory type. When storing an i16 value to i8 both types
used GPR32, producing an invalid copy:
```
*** Bad machine code: Invalid subregister index for virtual register ***
- function: truncstores
- basic block: %bb.0 (0xb1a58e8738c0)
- instruction: %2:gpr32 = COPY %val16.sub_32:gpr32
- operand 1: %val16.sub_32:gpr32
Register class GPR32 does not support subreg index sub_32
LLVM ERROR: Found 1 machine code errors.
```
This code path should only be used for FPRs. The existing RegBankSelect
avoids this by inserting a G_ANYEXT from i16 to i32, allowing the
imported pattern to match. It was exposed by the type-based
RegBankSelect prototype in #199040.
Assisted-by: codex
https://invent.kde.org/qt/clang/llvm/-/commit/2a0c57c535edc30f4f3d469542eef10d497db122
Git commit 1211be2753d3459bbe75be985f8c8248e7b62731 by GitHub (on behalf of aokblast) on 07/08/2026 at 07:25..
[lldb][X86] Fix *BSD build on GCC workaround change (#214514)
Reflect the class change on FreeBSD code.
Fixes: de4f929700f8 ("[lldb][x86] Remove GCC 6 workaround")
https://invent.kde.org/qt/clang/llvm/-/commit/1211be2753d3459bbe75be985f8c8248e7b62731
Git commit e9446de6df36e37f3dc2d5a07302faaf252fe262 by GitHub (on behalf of Luke Lau) on 07/08/2026 at 07:27..
[RISCV] Scale i64 insert/extract element cost on RV32 with LMUL (#214609)
Currently each vector instruction just has a cost of 1 but at higher
LMULs this isn't accurate.
Also it looks like the lowering might have changed since the cost was
added, but for inserts we now use vslide1down instead of vslide1up, see
the codegen in insertelt-int-rv32.ll.
---------
Co-authored-by: Ryan Buchner <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/e9446de6df36e37f3dc2d5a07302faaf252fe262
Git commit 860c36ee0f0ea01bb20c8dfc253877ba013adacb by GitHub (on behalf of Timm Baeder) on 07/08/2026 at 07:37..
[clang][ExprConst][NFC] Remove outdated comments (#213587)
Those parameters don't exist anymore.
https://invent.kde.org/qt/clang/llvm/-/commit/860c36ee0f0ea01bb20c8dfc253877ba013adacb
Git commit 3cc4656425ae7227e01e8a646de27123dc9ae7c3 by GitHub (on behalf of Alexandros Lamprineas) on 07/08/2026 at 07:38..
[BOLT][AArch64] Expand cmpbr when reversing would overflow (#202998)
AArch64 compare-and-branch instructions can usually be reversed by
changing the condition and adjusting the immediate. At boundary values,
that adjustment can underflow or overflow, leaving the branch
non-reversible.
When condition flags are dead at such a branch, split the compare branch
into an explicit compare followed by a conditional branch. The new
sequence lets branch fixup reverse the condition without relying on an
out-of-range adjusted immediate.
Teach the branch-fixing paths to use cached branch liveness information
when deciding whether this expansion is legal. The liveness snapshot is
built before branch relaxation/fixup and is safe for the current users:
they only insert trampolines/stubs between existing CFG edges or invert
branches without changing program semantics.
Since expansion can grow the source basic block, update the local
address accounting used by branch relaxation.
Assisted-by: Codex
https://invent.kde.org/qt/clang/llvm/-/commit/3cc4656425ae7227e01e8a646de27123dc9ae7c3
Git commit 9d3a3fa57c47fd06efea20f100ec747f5e5fbfdd by GitHub (on behalf of Timm Baeder) on 07/08/2026 at 07:47..
[clang][AST] Print OnePastTheEnd bit in `APValue::dump()` (#214450)
For lvalue APValues.
https://invent.kde.org/qt/clang/llvm/-/commit/9d3a3fa57c47fd06efea20f100ec747f5e5fbfdd
Git commit f3bd40ce6ba5a971b12fb5a268c5719ecbceff7d by GitHub (on behalf of Antonio Frighetto) on 07/08/2026 at 08:03..
[ValueLattice][SCCP] Consider provenance for predicate-derived pointer constants (#160083)
Similarly to what it is being already done in GVN
(fb632ed2377d280b581b8d4653b855e60d611f77), make sure pointers
equalities derived via PredicatedInfo may be propagated so long as
pointer constants' provenance is taken into account, which may be
non-existent. This is achieved by tracking provenance in
ValueLatticeElement and restrain replacement to uses allowed by
`canReplacePointersInUseIfEqual`.
Fixes: https://github.com/llvm/llvm-project/issues/159565.
https://invent.kde.org/qt/clang/llvm/-/commit/f3bd40ce6ba5a971b12fb5a268c5719ecbceff7d
Git commit 9b843a5ef6da6947d2cc5bcafe3efe0897844ab6 by GitHub (on behalf of T-Tie) on 07/08/2026 at 08:28..
[RISCV] Remove isBarrier from PseudoCALLReg/PseudoTLSDESCCall (#214155)
`PseudoCALLReg` models a returning call with an explicit link register.
The machine outliner uses it for normal outlined calls that return
through `x5`.
Marking this pseudo as a barrier is inconsistent with call sites at the
end of a block that falls through to a successor after the outlined
function returns. MachineVerifier correctly diagnoses those blocks as
malformed.
Remove the barrier flag and add a MIR regression test that outlines a
sequence at the end of a fall-through block. The test runs for RV32 and
RV64 with `-verify-machineinstrs`.
The attribute isBarrier from PseudoTLSDESCCall is removed as well for
the similar reason and a MachineVerifier regression test is added for
the TLSDESC call at the end of a fall-through block.
https://invent.kde.org/qt/clang/llvm/-/commit/9b843a5ef6da6947d2cc5bcafe3efe0897844ab6
Git commit d923e4674491a92320335c7a124546493f8e0b65 by GitHub (on behalf of Charles Zablit) on 07/08/2026 at 08:37..
[lldb][Windows] Document thread timeout variable (#213655)
This is a follow up to https://github.com/llvm/llvm-project/pull/213010.
https://invent.kde.org/qt/clang/llvm/-/commit/d923e4674491a92320335c7a124546493f8e0b65
Git commit fe1bfb32edc80cbe287342d6b350d6d6622493cc by GitHub (on behalf of Tim Besard) on 07/08/2026 at 08:41..
[SPIR-V] Lower nested aggregate insertvalue operands (#204239)
Fix a crash in the SPIR-V backend when an aggregate `extractvalue`
result is used as the base of a later `insertvalue`.
The failing pattern is:
```llvm
%e = extractvalue [1 x [1 x i64]] %a, 0
%i = insertvalue [1 x i64] %e, i64 %x, 0
%r = insertvalue [1 x [1 x i64]] %a, [1 x i64] %i, 0
```
`SPIRVPrepareFunctions` rewrites aggregate function arguments and
returns to `i32` SPIR-V value IDs. The `llvm.spv.insertv` intrinsic also
models its composite operand as an `i32` value ID. However, an
intermediate aggregate `extractvalue` could still be rewritten to
`llvm.spv.extractv` with an LLVM aggregate result type. Passing that
aggregate-typed value to `llvm.spv.insertv` made
`IRBuilder::CreateIntrinsic` create a call with a mismatched signature
and assert.
This patch mutates aggregate-result `llvm.spv.extractv` values that feed
`insertvalue` to `i32`, while preserving the original aggregate type in
the existing aggregate type metadata path. Selection then emits the
expected SPIR-V:
```spirv
%inner = OpCompositeExtract %Inner %outer 0
%new_inner = OpCompositeInsert %Inner %x %inner 0
%new_outer = OpCompositeInsert %Outer %new_inner %outer 0
```
Co-authored-by: Codex <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/fe1bfb32edc80cbe287342d6b350d6d6622493cc
Git commit 39cf655fdaafcff6e2fc145bd9a286f1d748dc3b by GitHub (on behalf of Dhairyashil R G) on 07/08/2026 at 08:41..
[mlir][affine] Implement ValueBoundsOpInterface for affine.for (#214614)
`scf.for` has provided induction variable bounds through
`ValueBoundsOpInterface` for a long time, but `affine.for` has no model
at all. `ValueBoundsConstraintSet` therefore cannot derive any bound for
an affine induction variable, not even `iv >= lowerBound`. Queries just
return "unknown", which is easy to miss because it looks the same as a
bound that genuinely cannot be proven.
Add a model for the induction variable. The lower bound of an
`affine.for` is the maximum over the results of its lower bound map and
the upper bound is the minimum over the results of its upper bound map,
so the induction variable is constrained by every individual result.
This follows how `AffineMinOpInterface` and `AffineMaxOpInterface` in
the same file align their maps with the constraint set; the shared logic
is factored into `alignBoundExpr`.
When both maps have exactly one result the step is taken into account as
well, following `scf::ForOpInterface`: the induction variable is always
a multiple of `step` away from the lower bound, so it never exceeds `lb
+ (tripCount - 1) * step`. That is tighter than `ub - 1` whenever the
trip count is not a multiple of the step, for `affine.for %i = 0 to 300
step 128` the induction variable only ever takes {0, 128, 256}, so the
bound is 256 rather than 299. As in `scf::ForOpInterface` this does not
replace the `iv < ub` constraint, since constraints multiplying two
constraint set dimensions aren't supported. The step is not applied when
either map has multiple results (`max`/`min` bounds), since no single
result can drive the arithmetic.
No bounds are inferred for `iter_args`.
Beyond the lit tests, the bound arithmetic was checked against an oracle
sweep: 6268 loops over an exhaustive `(lb, ub, step)` grid plus 4000
random cases, with the true induction variable range computed by
simulating each loop in Python rather than by asking the compiler.
Across 12536 queries there were 0 unsound bounds and 0 loose ones —
every bound is exactly `max(iv)` and `min(iv)`, so the model captures
every provable case rather than a conservative subset. Two controls:
reverting the change makes all 12536 queries unprovable, and mutating
the step arithmetic to be one step too tight makes the sweep report 5643
unsound bounds with counterexamples. The harness discriminates in both
directions.
No existing test needed updating: on its own this causes no `in_bounds`
folding in the vector dialect, because `isInBounds` still bails on any
non-constant index. Using these bounds there is a follow-up I'd like to
send once this lands.
Assisted-by: Claude
https://invent.kde.org/qt/clang/llvm/-/commit/39cf655fdaafcff6e2fc145bd9a286f1d748dc3b
Git commit c7259fcd5f8713aa96e50fec24b95abec3478d81 by GitHub (on behalf of Nikolas Klauser) on 07/08/2026 at 08:46..
[libc++][libc++abi] Merge the operator new implementations into a shared file (#213427)
Instead of copying the code around we can simply share a file that
actually implements operator new/delete and include that file in the two
places that need the definitions.
https://invent.kde.org/qt/clang/llvm/-/commit/c7259fcd5f8713aa96e50fec24b95abec3478d81
Git commit b004aeaa7f1b78213fd36dda800233279fa2b45a by David Spickett on 07/08/2026 at 09:02..
[lldb] Refactor RegisterTypeBuilder
This prepares it for emitting union types. Major changes:
* Entry function is now a dispatcher to builder functions for each type.
* Name mangling is standardised.
* The register name parameter is no longer needed and so was removed.
https://invent.kde.org/qt/clang/llvm/-/commit/b004aeaa7f1b78213fd36dda800233279fa2b45a