[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/momchil-velikov/gvn-reduce-gvn-h'.
Changed from 0000000000000000000000000000000000000000 to 6096261b4f019ad2a533b471ba426369158b8322
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 f8e258866980da486756e241016dd33ae68450be by GitHub (on behalf of Louis Dionne) on 21/07/2026 at 11:21..
[libc++] Include sizes in string benchmark names (#210795)
Otherwise we'd have duplicate benchmark names.
https://invent.kde.org/qt/clang/llvm/-/commit/f8e258866980da486756e241016dd33ae68450be
Git commit 7f49d95c09e8a22a6de737ae6006edbb3a0adfca by GitHub (on behalf of Louis Dionne) on 21/07/2026 at 11:22..
[libc++][NFC] Fix synopsis comment for error_condition::message() (#210724)
The method was marked as noexcept in the synopsis, but it's neither
marked noexcept in the spec nor in our implementation.
https://invent.kde.org/qt/clang/llvm/-/commit/7f49d95c09e8a22a6de737ae6006edbb3a0adfca
Git commit df4bb1f3106d39e5c6b767a28c0531efbbebc2d2 by GitHub (on behalf of Louis Dionne) on 21/07/2026 at 11:23..
[libc++] Compose the test suite Lit site config from harness and installation substitutions (#209638)
This patch restructures how libc++'s Lit site config is generated.
Instead of relying on the user-selected configuration file to include
the CMake bridge, it composes a site configuration from multiple
independent bits.
Importantly, it splits substitutions that pertain to the harness setup
(e.g. where to find Python) and substitutions that pertain to libc++
itself (e.g. the path to libc++ headers). This split and the top-level
composition of a site config file are incremental steps towards
decoupling the test suite from libc++'s own build.
https://invent.kde.org/qt/clang/llvm/-/commit/df4bb1f3106d39e5c6b767a28c0531efbbebc2d2
Git commit ad3f09c7de3da1f023bc1134eaa33be6d39cc9ca by GitHub (on behalf of Gábor Horváth) on 21/07/2026 at 11:33..
[ADT] Add single-pass merge for ImmutableSet/ImmutableMap (#209807)
The immutable-set/map dataflow joins merged two containers by inserting
the
elements of one into the other one at a time, costing O(|B| * log|A|)
and
re-copying shared spine nodes on every insert.
Add a single-pass, structure-sharing tree merge on ImutAVLFactory
(mergeTrees), exposed as ImmutableSet::Factory::unionSets and
ImmutableMap::Factory::mergeWith. It recurses over the larger operand
and
splits the smaller at each key, returning non-overlapping subtrees
unchanged,
so each spine node is copied at most once: O(|B| * log(|A|/|B| + 1)).
Two flags tune it for the different joins:
* KeepUnmatched - keep keys unique to one side (set union / a lattice
join
with an identity) vs. pass them through the combiner (a symmetric join,
e.g. liveness Must->Maybe).
* SkipShared - return a pointer-identical subtree unchanged in O(1).
Valid
for an idempotent merge (Combine(a, a) == a), which holds for set union
and
every lattice join. Since dataflow states are path-copied from one
another,
a join's operands usually share most subtrees by pointer, so a join that
touches only a few keys becomes nearly O(diff).
Wire it into the Clang lifetime-safety analysis (set and map joins) and
the
LiveVariables merge, and add ImmutableMergeBM to track it.
Speedups on the lifetime-safety dataflow benchmark (LoanPropagation
phase):
pointer cycle in a loop ~2.6x (1.59 s -> 0.61 s)
CFG merges ~190x (1.83 s -> 9.5 ms)
switch fan-out ~1.9x (LiveOrigins; disjoint states, no skip)
LiveVariables is ~2-3x faster on liveness-heavy inputs and neutral on
typical
code (the join is a small fraction of real-code analysis time).
ImmutableMergeBM confirms the merge beats the add loop for small and
near-identical operands, except for independently-built sets differing
by
exactly one element; when one operand is derived from the other -- the
real
dataflow case -- the pointer-skip makes even that a large win. New
randomized
ADT stress tests check the merge against std::set/std::map oracles for
both
canonicalizing and non-canonicalizing factories.
Assisted by: Claude Opus 4.8
Co-authored-by: Gabor Horvath <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/ad3f09c7de3da1f023bc1134eaa33be6d39cc9ca
Git commit b8eebf2704f2ebb6894fd952e4f15fdb62270606 by GitHub (on behalf of h-vetinari) on 21/07/2026 at 11:34..
[libc++][NFC] Re-order availability mapping to `_LIBCPP_INTRODUCED_IN_LLVM_{N}` (#210694)
Noticed that the new additions (from 16f692338cf and 8a531c3608c) were placed
rather randomly. Put the mapping back to reverse chronological order, see
783fd2f9d.
https://invent.kde.org/qt/clang/llvm/-/commit/b8eebf2704f2ebb6894fd952e4f15fdb62270606
Git commit c40a68644c550dcfa3c3d0b560e3aeea1d159d79 by GitHub (on behalf of Michael G. Kazakov) on 21/07/2026 at 11:40..
[libc++] Strip cv-refs in __desugars_to specialization for integral types (#208950)
This PR passes the argument type through `__remove_cvref_t` before
passing to `is_integral`.
Fixes #208236
https://invent.kde.org/qt/clang/llvm/-/commit/c40a68644c550dcfa3c3d0b560e3aeea1d159d79
Git commit faaeaf35a50acefd4e25e092e3f720067c40afe3 by GitHub (on behalf of Connector Switch) on 21/07/2026 at 11:41..
[libc++] Implement P0493R5: Atomic minimum/maximum (#180333)
Closes #105418.
Since gcc does not currently support `__atomic_fetch_min/max`, we use a
CAS loop in `atomic_ref` and `support/gcc.h`.
---------
Co-authored-by: Louis Dionne <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/faaeaf35a50acefd4e25e092e3f720067c40afe3
Git commit 460778b9d64ed36fd7e80a4cc73ea552aebf016b by GitHub (on behalf of Michael G. Kazakov) on 21/07/2026 at 11:42..
[libc++][pstl] Default implementation of parallel std::adjacent_difference (#207585)
This PR adds a "one-liner" default implementation of parallel
`std::adjacent_difference` on top of parallel binary `std::transform`.
The implementation builds two iterator ranges out of the input one, so
that a zip of these ranges yields adjacent pairs. Then performs a binary
transform to calculate and output the adjacent differences.
Part of https://github.com/llvm/llvm-project/issues/99938
https://invent.kde.org/qt/clang/llvm/-/commit/460778b9d64ed36fd7e80a4cc73ea552aebf016b
Git commit d7da964ee1eab426e0d1f617ae2947f4e30d304f by GitHub (on behalf of Balázs Benics) on 21/07/2026 at 11:46..
[analyzer][NFC] Add StackFrame parent-chain range helpers (#210938)
Walking a StackFrame's parent chain was open-coded across the Analysis
library and Static Analyzer as hand-rolled loops of the form `for (const
StackFrame *SF = X; SF; SF = SF->getParent())`.
Add range-based traversal helpers and convert the applicable loops:
* StackFrame::parents() - strict ancestors (excludes *this)
* StackFrame::parentsIncludingSelf() - *this then all ancestors
Both are built on a small forward `parent_iterator` that dereferences to
`const StackFrame &` and advances via getParent(), with a null
past-the-end sentinel.
For the common case of obtaining the current frame from an ExplodedNode
or CheckerContext, add a self-inclusive `stackframes()` convenience on
each that delegates to `getStackFrame()->parentsIncludingSelf()`.
Converted call-sites additionally adopt llvm::any_of / llvm::enumerate /
make_pointer_range where it makes the traversal more declarative. Loops
that stop at a target frame or advance conditionally (i.e. not "walk
until null") are intentionally left as-is.
https://invent.kde.org/qt/clang/llvm/-/commit/d7da964ee1eab426e0d1f617ae2947f4e30d304f
Git commit f72f994ad894bf82ab8d12f848f583c5d0cf0048 by GitHub (on behalf of Luke Hutton) on 21/07/2026 at 11:46..
[mlir][ods] Fix string interpolation at end of description (#209744)
Updates the error streaming string logic to handle the case where string
interpolation used at the end of the description. Previously this could
generate malformed code that would not compile e.g.:
```
"' failed to satisfy constraint: another attribute " << reformat(attr)";
```
With this change the above example would now generate:
```
"' failed to satisfy constraint: another attribute " << reformat(attr) << "";
```
https://invent.kde.org/qt/clang/llvm/-/commit/f72f994ad894bf82ab8d12f848f583c5d0cf0048
Git commit 3fc3ef399d9972361209917bf26ae9cc7317d3a9 by GitHub (on behalf of Akshay K) on 21/07/2026 at 11:47..
[Clang] Fix assertion failure when classifying a dependent call to a builtin (#210524)
## Summary
Fix an assertion failure when Clang classifies a built-in call with
type-dependent arguments before template instantiation, e.g., while
deducing an `auto` non-type template parameter:
For example:
```cpp
template <auto> struct S {};
template <typename T>
using Alias = S<__builtin_constant_p(T::x)>;
```
```
Assertion failed: (isa<T>(CanonicalType)), function castAs, file
TypeBase.h, line 9349.
#9 clang::Type::castAs<clang::FunctionType>() const
#10 clang::CallExpr::getCallReturnType(clang::ASTContext const&) const
#11 ClassifyInternal(clang::ASTContext&, clang::Expr const*)
#12 clang::Expr::ClassifyImpl(clang::ASTContext&,
clang::SourceLocation*) const
#13 clang::Sema::DeduceAutoType(...)
#14 clang::Sema::CheckTemplateArgument(...)
```
## Cause
Built-in references initially have the BuiltinFn placeholder type. For a non-dependent call, `BuildResolvedCallExpr()` applies `CK_BuiltinFnToFnPtr`, converting the callee to its function-pointer type.
When a call has type-dependent arguments, `BuildCallExpr()` postpones semantic analysis until instantiation. The callee, therefore, retains its BuiltinFn placeholder type. Deducing the auto non-type template parameter classifies the dependent call through `Expr::ClassifyImpl()`. This calls `CallExpr::getCallReturnType()`, which previously did not handle BuiltinFn and attempted to cast the placeholder to FunctionType, triggering an assertion.
The issue also affects ordinary builtins such as `__builtin_ffs` and is not specific to` __builtin_constant_p`.
## Fix
Handle `BuiltinFn` alongside the dependent and `Overload` callee cases in `CallExpr::getCallReturnType()` and return `DependentTy`. This matches the type `BuildCallExpr()` gives the `CallExpr` itself, so `getCallReturnType()` and `getType()` now agree on such calls.
Built-in resolution and built-in-specific type checking still occur as usual during template instantiation.
Added coverage for dependent calls and successful instantiation of `__builtin_constant_p` and `__builtin_ffs`, a non-dependent control case, and getCallReturnType() for a BuiltinFn callee.
https://invent.kde.org/qt/clang/llvm/-/commit/3fc3ef399d9972361209917bf26ae9cc7317d3a9
Git commit fe0bc1136dc991486e6a84d6ed034dc3617faaa7 by GitHub (on behalf of Mariusz Sikora) on 21/07/2026 at 12:09..
[NFC][AMDGPU] Add s_wait asynccnt/tensorcnt test for gfx13 (#210916)
https://invent.kde.org/qt/clang/llvm/-/commit/fe0bc1136dc991486e6a84d6ed034dc3617faaa7
Git commit f2153eec7aaddd227c303bf0b6e6a8ccb7863857 by GitHub (on behalf of Alexis Engelke) on 21/07/2026 at 12:14..
[Xtensa][NFC] Use compact enum for CPUNames/features (#206954)
Store strings without relocations using compact enums. This reduces the
size of libLLVM.so .data.rel.ro by ~1kiB.
https://invent.kde.org/qt/clang/llvm/-/commit/f2153eec7aaddd227c303bf0b6e6a8ccb7863857
Git commit 4d4bf128eb54cdd2ad347507208a202da1f9c172 by GitHub (on behalf of Arseniy Obolenskiy) on 21/07/2026 at 12:29..
[AMDGPU] Reject illegal buffer atomic data widths in SelectionDAG (#210925)
Continuation of the fix introduced in #210366, but this time for
raw/struct buffer atomics instead of image atomics
https://invent.kde.org/qt/clang/llvm/-/commit/4d4bf128eb54cdd2ad347507208a202da1f9c172
Git commit a83cc57559428ebd51d51c83db27a9454fbbe114 by GitHub (on behalf of eleviant) on 21/07/2026 at 12:31..
Attempt to fix buildbot failure (#210956)
Value names are discarded by default on build without asserts.
https://invent.kde.org/qt/clang/llvm/-/commit/a83cc57559428ebd51d51c83db27a9454fbbe114
Git commit 981735b4df68cab22c5c8309f4fbc6b26aab7258 by GitHub (on behalf of Alexey Bataev) on 21/07/2026 at 12:32..
[SLP]Fix crash on short interleaved gathered-load remainder
A trailing, undersized chunk could keep an InterleaveFactor too
large for it, so RISCVTTIImpl::getInterleavedMemoryOpCost divided
by it and built a zero-element vector type.
Fixes #210849
Reviewers:
Pull Request: https://github.com/llvm/llvm-project/pull/210965
https://invent.kde.org/qt/clang/llvm/-/commit/981735b4df68cab22c5c8309f4fbc6b26aab7258
Git commit 3ed183660093a3d6aa286b5d1339a19c0c834aa1 by GitHub (on behalf of Ömer Sinan Ağacan) on 21/07/2026 at 12:33..
[GlobalISel][AArch64] Add more memcpy and memmove tests (NFC) (#210263)
Test inlined memcpy and memmove operations with multiple loads/stores
with different sizes.
New IR tests added for size 7 to check which one of load/store sequences
we generate:
- 4 + 2 + 1 bytes
- 4 + 4 bytes (4 bytes at offset, 4 bytes at offset + 3)
We also didn't have the `memcpy_inline_...` tests for the
`memmove.inline` intrinsic. I've copied all `memcpy_inline_...` tests
for `memmove.inline`, with the exception of sizes 65, 64, and 63, as I'm
not sure whether they're useful. (the same edge cases are already
checked in tests with sizes 10 and 7)
List of all IR tests added:
- memcpy_7
- memcpy_7_volatile
- memcpy_inline_7
- memcpy_inline_7_volatile
- memmove_7
- memmove_7_volatile
- memmove_inline_0
- memmove_inline_0_volatile
- memmove_inline_7
- memmove_inline_7_volatile
- memmove_inline_10
- memmove_inline_10_volatile
- memmove_inline_300
- memmove_inline_300_volatile
https://invent.kde.org/qt/clang/llvm/-/commit/3ed183660093a3d6aa286b5d1339a19c0c834aa1
Git commit 1a11f6ca17790ced1f3108c290e9c48d9bdb55e3 by GitHub (on behalf of Felipe de Azevedo Piovezan) on 21/07/2026 at 12:33..
[lldb] Delete AppleObjCRuntimeV1 (#203190)
This was used in older 32-bit ObjC programs, and it is not used anywhere
by the debugger.
https://invent.kde.org/qt/clang/llvm/-/commit/1a11f6ca17790ced1f3108c290e9c48d9bdb55e3
Git commit 27eeb7370281e4fdefdddeaa4b3cbb8ca11ea71f by GitHub (on behalf of Matt Arsenault) on 21/07/2026 at 12:38..
AMDGPU: Use module flags to control xnack and sramecc (#204595)
This ensures these ABI details are encoded in the IR module
rather than depending on external state from command-line flags.
Previously, these were encoded as function-level subtarget features.
The code object output was a single target ID directive implied
by the global subtarget. The backend would previously check if a
function's subtarget feature mismatched the global subtarget. This
is avoided by making xnack and sramecc module-level properties from
the start. This also provides proper linker compatibility
enforcement, moving the error point earlier.
The old encoding was also an abuse of the subtarget feature system.
Subtarget features are a bitvector, and later features in the string
can override earlier ones. The old handling added a special case
where explicit settings were preserved: ordinarily +feature,-feature
should result in the feature being disabled, but +xnack,-xnack would
preserve the explicit "-xnack" state, which differs from the absence
of any xnack setting.
The new flags are encoded as 0/1, with the "any" case represented
as the absence of the flag. I considered an explicit tri-state unknown
value, but decided against it.
This also removes warnings when using these module flags on targets
that do not support the corresponding feature. Previously, messages
were written directly to stderr instead of using proper diagnostics.
Avoiding the warning reduces burden on frontends to check which targets
require the flags.
For migration purposes, the subtarget features still exist. Currently,
they are still respected in the various binary tools, pending
disassembler changes to determine target ID modifiers from e_flags.
CodeGen requires using the module flags. An error will be raised when
attempting to use the old global subtarget features. These should be
removed after a migration period for frontends to update. Functionality
wise, bitcode autoupgrade should work. Old bitcode will not have the
flags, resulting in a different target ID in the output binary than
expected, but it should run correctly.
New cl::opts exist only because it was inconvenient to update all
tests using multiple xnack modes. Users should never use these.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/27eeb7370281e4fdefdddeaa4b3cbb8ca11ea71f
Git commit f90e121dde60bea7e2988cf277ca4a484bce33b9 by GitHub (on behalf of Paulius Velesko) on 21/07/2026 at 12:39..
[Darwin] Use macOS product version in ensureTargetInitialized (#206902)
`Darwin::ensureTargetInitialized()` recorded the raw triple OS version
from `getOSVersion()`, which on macOS is the Darwin *kernel* version
(e.g. `24.3.0`), not the macOS *product* version (`15.x`). The offload
host job later calls `setTarget()` again from `AddDeploymentTarget()`
with the product version; `setTarget()`'s reinit guard only
short-circuits when the versions match, so the mismatch trips
`assert(!TargetInitialized && "Target already initialized!")` and clang
aborts on every `-x hip --offload=spirv64* --target=arm64-apple-darwin`
compile.
Convert macOS kernel versions via `getMacOSXVersion()` so the lazy init
records the same version `AddDeploymentTarget()` uses later.
https://invent.kde.org/qt/clang/llvm/-/commit/f90e121dde60bea7e2988cf277ca4a484bce33b9
Git commit b1d21c6d3121898dc13c0df8cf9e4410bee75cfb by GitHub (on behalf of Paulius Velesko) on 21/07/2026 at 12:39..
[ExpandVariadics] Don't lower unmangled C printf on SPIR-V (#206998)
An unmangled C `printf` declaration demangles to bare `printf` (no
argument list), so `SPIRV::ignoreFunction`'s `printf(` prefix check
missed it and ExpandVariadics packed its arguments into a vararg buffer;
the SPIR-V backend then passed the buffer pointer as printf's first
variadic operand, so device printf printed pointer values instead of the
actual arguments. Match the bare name too so OpenCL/HIP printf (emitted
unmangled) is left as a variadic call for the backend's OpenCL.std
printf lowering.
https://invent.kde.org/qt/clang/llvm/-/commit/b1d21c6d3121898dc13c0df8cf9e4410bee75cfb
Git commit 4aa8d561bb06ecf89c723524fddbf0b58c5ec205 by GitHub (on behalf of Paul Walker) on 21/07/2026 at 12:49..
[LLVM][SVE] Convert FFR intrinsic definition to use IntrRead/IntrWrite. (#210084)
Follows on from https://github.com/llvm/llvm-project/issues/154144 to
better articulate the FFR intrinsics memory effects.
I've been deliberatly cautious with marking FFR as read/write for the
load intrinsics. There is an argument they could be write only but I'm
not looking to optimise FFR accesses at this stage.
https://invent.kde.org/qt/clang/llvm/-/commit/4aa8d561bb06ecf89c723524fddbf0b58c5ec205
Git commit 42972f5e5d950b6644a926f402dc54ea3ff06ec3 by GitHub (on behalf of Erich Keane) on 21/07/2026 at 12:56..
[CIR] Introduce data_member_offset attribute (#208777)
Some fields, like no_unique_address marked ones, aren't present in the
CIR struct type. This attribute represents an offset into a struct
instead, since get_member isn't possible without a member.
I also considered representing these types in the struct, but it ends up
causing a lot of awful looking structs, and forces the LLVMIR to contain
empty fields for each of these, but not in lexical order, which is
particularly awful looking.
I considered making this part of data-member, but it seems like not a
particularly good idea, since this isn't really getting a 'member' in
the traditional sense.
https://invent.kde.org/qt/clang/llvm/-/commit/42972f5e5d950b6644a926f402dc54ea3ff06ec3
Git commit 0e678e9ef18b1b2d3261207e288ae3f2667bbd19 by GitHub (on behalf of Nico Weber) on 21/07/2026 at 12:59..
[gn build] Port ea205541b987 (#210977)
https://invent.kde.org/qt/clang/llvm/-/commit/0e678e9ef18b1b2d3261207e288ae3f2667bbd19
Git commit 11a6145c5ed1f9676ad18189b7071e456c76bb79 by GitHub (on behalf of Nico Weber) on 21/07/2026 at 12:59..
[gn build] Port 921f4da4a05f (#210976)
https://invent.kde.org/qt/clang/llvm/-/commit/11a6145c5ed1f9676ad18189b7071e456c76bb79
Git commit 114372a86e7463cbdb52ced9f73cc7d70f49eda9 by GitHub (on behalf of Nico Weber) on 21/07/2026 at 12:59..
[gn build] Port 30c0454414ec (#210975)
https://invent.kde.org/qt/clang/llvm/-/commit/114372a86e7463cbdb52ced9f73cc7d70f49eda9
Git commit 14cb4614c65acc3c4f454220c2f2dae7b5ddaf34 by GitHub (on behalf of Nico Weber) on 21/07/2026 at 13:00..
[gn build] Port 1a11f6ca1779 (#210974)
https://invent.kde.org/qt/clang/llvm/-/commit/14cb4614c65acc3c4f454220c2f2dae7b5ddaf34
Git commit 2cd5deb2208683bc2d3545e125258a9714f3aef1 by GitHub (on behalf of Louis Dionne) on 21/07/2026 at 13:03..
[libc++] Fix test-at-commit after df4bb1f3106d (#210983)
https://invent.kde.org/qt/clang/llvm/-/commit/2cd5deb2208683bc2d3545e125258a9714f3aef1
Git commit 1d0b606198b502a307da0f688262a1044c38f316 by GitHub (on behalf of Dan Blackwell) on 21/07/2026 at 13:08..
[Darwin][TSan] Fix race in mach_vm_deallocate interceptor (#210716)
I have seen an issue whereby the meta store in MetaMap::AllocBlock lands
in the unmapped gap left during the tsan::MetaMap::ResetRange call;
where the range is first unmapped, and then remapped with MAP_FIXED.
This occurred under the mach_vm_deallocate interceptor, because it first
does the deallocate call, and only then does it call UnmapShadow -
leaving a gap where a fresh slab for malloc can land, only to have the
meta region for that range mapped out from under it, resulting in a bad
access fault.
It is worth noting that there is a comment above the IsValidMmapRange
function (which gets called during UnmapShadow), that describes this
exact issue in the context of munmap.
rdar://179172055
Assisted by: Claude
https://invent.kde.org/qt/clang/llvm/-/commit/1d0b606198b502a307da0f688262a1044c38f316
Git commit 215b3e42d03e7e0cbd49ae0b15e726b3d1bdc360 by GitHub (on behalf of Michał Kurek) on 21/07/2026 at 13:18..
[DAGCombiner] Teach MatchLoadCombine to look through AND masks (#200247)
Fixes #191193
`MatchLoadCombine` can combine OR trees built from shifted/zexted
consecutive byte loads into a wider load, but it currently bails out
when one of the loaded bytes is masked before being shifted into place.
This will miss patterns such as the following
```
zext(load i8 p) | (zext(and(load i8 p+1, 3)) << 8)
```
which can be implemented as a 16-bit load followed by a mask.
This PR teaches `calculateByteProvider()` to look through constant AND
masks by tracking the mask applied to each byte. When the byte providers
cover a consecutive load range, we form the wider load and apply a final
mask to preserve the original value.
Added X86 and AArch64 tests covering the masked-byte combine, plus
negative cases (non-adjacent loads, volatile, variable mask, multi-use
AND).
Assisted-by: Claude Code
https://invent.kde.org/qt/clang/llvm/-/commit/215b3e42d03e7e0cbd49ae0b15e726b3d1bdc360
Git commit 81081c00e99e35394e4d09016e565443cbec254e by GitHub (on behalf of Momchil Velikov) on 21/07/2026 at 13:19..
[GVN] Remove unused debug helper (NFC) (#210333)
The `GVNPass::dump` method is not used anywhere. Moreover, there's no
`GVNPass` state that corresponds to its parameter type. Even if a
`GVNPass::dump` method could be useful, this one wasn't it.
https://invent.kde.org/qt/clang/llvm/-/commit/81081c00e99e35394e4d09016e565443cbec254e
Git commit 7c445ab1d08597a89a829ff938b55264cc480150 by GitHub (on behalf of Zorojuro) on 21/07/2026 at 13:20..
[libc] Float128 Emulation in LLVM libc (#200565)
Introducing emulated float128 in LLVM libc
https://invent.kde.org/qt/clang/llvm/-/commit/7c445ab1d08597a89a829ff938b55264cc480150
Git commit 7c40a1d796cec2207bc697d94355a71962ee33df by GitHub (on behalf of Simon Pilgrim) on 21/07/2026 at 13:26..
[CostModel][X86] getArithmeticReductionCost - convert to CostKindTblEntry entries. NFC. (#210969)
No actual cost changes yet, but makes it much easier to adjust costs as
we progress.
https://invent.kde.org/qt/clang/llvm/-/commit/7c40a1d796cec2207bc697d94355a71962ee33df
Git commit b679982e67d34e8afa925691715aa69e06ea7e80 by GitHub (on behalf of Florian Hahn) on 21/07/2026 at 13:32..
[VPlan] Remove additional stray whitespace when printing calls. (#210979)
VPWidenCallRecipe::print had a stray whitespace between call and
fucntion name. Strip stray whitespace and add strict whitespace test to
guard against regressions.
https://invent.kde.org/qt/clang/llvm/-/commit/b679982e67d34e8afa925691715aa69e06ea7e80
Git commit c3e48dfd552de502f778f1b190933944a62cf75a by GitHub (on behalf of Joel E. Denny) on 21/07/2026 at 13:38..
[FileCheck][NFC] Encapsulate more into InputAnnotationLabeler (#207484)
This patch migrates more label-making concerns from
buildInputAnnotations into the InputAnnotationLabeler. It also
eliminates the brittle approach of creating a new InputAnnotationLabeler
object with a separate label prefix upon each MatchResultDiag while
persisting an object to close the previous search range. Instead, this
patch creates just one InputAnnotationLabeler object to handle all
diags, and it maintains a table of label prefixes for check patterns.
That approach seems easier to understand and more amenable to code
evolution.
https://invent.kde.org/qt/clang/llvm/-/commit/c3e48dfd552de502f778f1b190933944a62cf75a
Git commit c49595f5ce2f59a21e0c929254af7f0d6ed0e5c6 by GitHub (on behalf of Nerixyz) on 21/07/2026 at 13:38..
Revert "[lldb][Windows] Only embed Python home in Debug config (#209464)" (#210989)
This reverts commit 5a19a3a4b9915d19fff1b8298e723ee2b24ebc6a.
To fix a failure with MinGW
(https://github.com/llvm/llvm-project/pull/209464#issuecomment-5034222807).
https://invent.kde.org/qt/clang/llvm/-/commit/c49595f5ce2f59a21e0c929254af7f0d6ed0e5c6
Git commit ba836590ffed1305a770fc18f4a3f676f9829df1 by GitHub (on behalf of David Green) on 21/07/2026 at 13:42..
[SDAG] Use DAG.getTokenFactor in more places (#210949)
This will cause the TokenFactor to be split into nodes of at most
SDNode::getMaxNumOperands() size.
This fixes #189161 but I have not added a test case as the output is
in excess of 160000 lines long.
https://invent.kde.org/qt/clang/llvm/-/commit/ba836590ffed1305a770fc18f4a3f676f9829df1
Git commit 9eac681359c922aff608612eda0a0adc15106213 by GitHub (on behalf of Soham Karandikar) on 21/07/2026 at 14:02..
[Flang] [OpenMP] Run `MarkDeclareTarget` pass again before `HostOpFiltering` (#210049)
Fixes #209123.
The power operation `math.ipowi` is converted to a function by
`ConvertMathToFuncs`. When used in a target region, this pass runs well
after `MarkDeclareTarget` which causes the newly created power function
to not have the `omp.declare_target` attribute, which in turn trips up
the `HostOpLowering` pass. Detailed investigation
[here](https://github.com/llvm/llvm-project/issues/209123#issuecomment-4991765854).
Right now, I've just added a couple of lines to run `MarkDeclareTarget`
again, before `HostOpFiltering`. Since I'm quite new to this, I'd like
some help on whether this is acceptable, or should the
`MarkDeclareTarget` pass be moved to after `ConvertMathToFuncs` and
before `HostOpFiltering`.
https://invent.kde.org/qt/clang/llvm/-/commit/9eac681359c922aff608612eda0a0adc15106213
Git commit 7cd9cee53617d526c3526d01426ba552f2a825bb by GitHub (on behalf of Simon Pilgrim) on 21/07/2026 at 14:09..
[CostModel][X86] getArithmeticReductionCost - add missing type split handling for AVX512 types (#210994)
https://invent.kde.org/qt/clang/llvm/-/commit/7cd9cee53617d526c3526d01426ba552f2a825bb
Git commit e5a5c5dfdb4ac6b004ab31df25c30f4cc8772afe by GitHub (on behalf of Abid Qadeer) on 21/07/2026 at 14:12..
[flang][OpenMP] Add semantic checks for two DECLARE VARIANT restrictions (#209528)
Diagnose two DECLARE VARIANT restrictions from the OpenMP specification
(5.2 [7.5], 6.0 [9.6]) that were previously accepted without error:
- If a procedure is determined to be a function variant through more
than one DECLARE VARIANT directive, the construct selector set of their
context selectors must be the same.
- A procedure determined to be a function variant may not be specified
as a base function in another DECLARE VARIANT directive.
Assisted-by: Cursor
https://invent.kde.org/qt/clang/llvm/-/commit/e5a5c5dfdb4ac6b004ab31df25c30f4cc8772afe
Git commit f82f9693fa3a9bee4e045a06417740586cfbf207 by GitHub (on behalf of Vladislav Dzhidzhoev) on 21/07/2026 at 14:16..
[DirectX] Add slim debug support (#204459)
When DXC is called with `/Zs` flag, it emits "slim" debug info. It means
that ILDB section is omitted from the main DXContainer output and from
the output PDB file.
This patch reimplements similar behavior in llc, introducing
`--dx-slim-debug` flag.
https://invent.kde.org/qt/clang/llvm/-/commit/f82f9693fa3a9bee4e045a06417740586cfbf207
Git commit b02de9d35e7aad5b1dfb6dd8bc759bb8fa2d539f by GitHub (on behalf of nvmitch) on 21/07/2026 at 14:18..
[GlobalISel] Use correct fp semantics when building constants. (#210190)
This bug can materialize as a `bfloat 1.0` becoming `0x3C00` which is
the bit pattern for `half 1.0`. After this change, `0x3F80` is correctly
returned.
The fix is to use the destination type to convert the provided
constant's semantics in `buildFConstant`. Added a unit test.
Removed `getAPFloatFromSize`, no more users.
https://invent.kde.org/qt/clang/llvm/-/commit/b02de9d35e7aad5b1dfb6dd8bc759bb8fa2d539f
Git commit 17ac8fdd95283110a14f1de8c15a0fc661119296 by GitHub (on behalf of Louis Dionne) on 21/07/2026 at 14:21..
[libc++] Don't require complete types in vector<T>::empty() (#210754)
This was previously not required, but the patch to introduce a new
size-based vector layout unintentionally added this new requirement. We
almost certainly not want to promise this guarantee going forward, but
we should actually land this change explicitly and consider the
transition story, not do it as a fallout of another refactoring.
Fixes #210732
https://invent.kde.org/qt/clang/llvm/-/commit/17ac8fdd95283110a14f1de8c15a0fc661119296
Git commit 754c2bc62d1db7af5e65fe707705606d5482c61e by GitHub (on behalf of Aleksandr Popov) on 21/07/2026 at 14:31..
[SCEV][NFC] Precommit tests for MatchRangeCheckIdiom through zext (#210978)
'zext(X - 1) ult C' => 'X in [1, C+1)';
also ugt case (wrapping range)
Alive2 proof: https://alive2.llvm.org/ce/z/zcdv_2
https://invent.kde.org/qt/clang/llvm/-/commit/754c2bc62d1db7af5e65fe707705606d5482c61e
Git commit 7b159b648bc3684da152a3f14b5ee53456736fe9 by GitHub (on behalf of Corentin Jabot) on 21/07/2026 at 14:33..
[Clang] Defaults `-Wunicode-whitespace` to an error. (#210945)
Clang accepts some Unicode whitespaces in some context. There are a few
issues with this:
- The support is incomplete and inconsistent, as illustrated in #38934
- We are not consistent with the Unicode specs (tr1, tr55) in that we
treat U+0028/0+0029 as horizontal separators while Unicode consider them
vertical.
Ultimately, Unicode whitespaces are more likely than not unintended.
Neither GCC nor MSVC support this extension.
Fixes #38934.
https://invent.kde.org/qt/clang/llvm/-/commit/7b159b648bc3684da152a3f14b5ee53456736fe9
Git commit 444ea3e6353a00c274fa19e2839cfcfc2cdfab36 by GitHub (on behalf of Petar Avramovic) on 21/07/2026 at 14:33..
AMDGPU/GlobalISel: Clean up fp LLT usage in AMDGPULegalizerInfo (#210999)
Remove local variables in favor of global F16/BF16/F32/F64/V2F16/V2BF16.
These are now proper floating point LLTs instead of LLT::scalar.
A couple of legalizer actions now use fp extended LLT for type checks.
This is intended and is planned for all floating point opcodes.
In most cases the current S16/S32/S64 action on floating point opcodes was
intended for F16/F32/F64, and we will need to define an action for BF16.
https://invent.kde.org/qt/clang/llvm/-/commit/444ea3e6353a00c274fa19e2839cfcfc2cdfab36
Git commit 119b31fd30644157b9429d122f777c6ae2e34a09 by GitHub (on behalf of Adel Ejjeh) on 21/07/2026 at 14:40..
[DAGCombiner] Fold NaN-guard fptosi/fptoui select to saturating variant (#201435)
Fold select (setcc X, 0, SETUO), 0, (fp_to_sint/fp_to_uint X) to
fp_to_sint_sat/fp_to_uint_sat in the generic DAG combiner, gated by
shouldConvertFpToSat. Also handles the SETO form with swapped arms, and
looks through an AND mask on the conversion result. Lit tests added for
AMDGPU and AArch64.
Assisted-by: Claude Code
https://invent.kde.org/qt/clang/llvm/-/commit/119b31fd30644157b9429d122f777c6ae2e34a09
Git commit 53199a1b9216a15d13da824c9140daf8863438aa by GitHub (on behalf of Lucas Mellone) on 21/07/2026 at 15:20..
[libc++][ranges] Mark LWG3664 as resolved (#210550)
Closes https://github.com/llvm/llvm-project/issues/105066.
When libc++ implemented `ranges::distance` in
c965d5448ecdf9a5513983862a78a2ba8f7fbab8, LWG3664 was implemented
together. The patch additionally changed cast result type from `const
decay_t<I>&` to `decay_t<I>`, which partially implemented LWG4242.
Currently, we are using `iter_difference_t<_Ip>` as the return type of
one `operator()` overload while LWG3664 modified that overload to return
`iter_difference_t<decay_t<_Ip>>`. The change is NFC because when
`iter_difference_t<decay_t<_Ip>>` is valid, `iter_difference_t<_Ip>` is
also valid and denotes the same type.
References:
- https://wg21.link/LWG3664
- https://eel.is/c++draft/range.iter.op.distance
---------
Co-authored-by: A. Jiang <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/53199a1b9216a15d13da824c9140daf8863438aa
Git commit 4f58fc26ad7652cdcfda3e6d50a372241265ee2b by GitHub (on behalf of Corentin Jabot) on 21/07/2026 at 15:22..
[Clang] Yet more consistent Unicode diagnostics (#211002)
This PR
- Use the recently introduced `EscapeSingleCodepointForDiagnostic` in
more places
- Fix a bug where U+FEFF was incorrectly treated as a BOM and therefore
did not render at all in diagnostics
https://invent.kde.org/qt/clang/llvm/-/commit/4f58fc26ad7652cdcfda3e6d50a372241265ee2b
Git commit 2f721aef85accd57afdb3e6bdb6e6fa5d5629579 by GitHub (on behalf of Domenic Nutile) on 21/07/2026 at 15:22..
[AMDGPU] Upstream True16 runlines for various tests (#209891)
https://invent.kde.org/qt/clang/llvm/-/commit/2f721aef85accd57afdb3e6bdb6e6fa5d5629579
Git commit 2542743b1507ace8d05d894f5ec5135e9a9863ba by GitHub (on behalf of Abhina Sree) on 21/07/2026 at 15:22..
[SystemZ] Enable clang-target-64-bits for s390x (#210361)
Enable clang-target-64-bits for s390x so we can enable tests like
https://github.com/llvm/llvm-project/pull/210341
https://invent.kde.org/qt/clang/llvm/-/commit/2542743b1507ace8d05d894f5ec5135e9a9863ba
Git commit 162d9f09299d3951d7c73e6aa00f2e2bac459e26 by GitHub (on behalf of Max Desiatov) on 21/07/2026 at 15:34..
[lld][WebAssembly] Preserve segment linking flags in --relocatable output (#210747)
`OutputSegment::addInputSegment` copied each input chunk's alignment but
never its flags, so a relocatable link serialized `flags=0` for every
data segment and dropped `RETAIN` and `STRINGS`. Losing `RETAIN` let the
final default `--gc-sections` link discard runtime-registered sections
such as Swift's `swift5_*` metadata, corrupting the program. This unions
each input segment's flags into the output segment's `linkingFlags` and
adds a `lld/test/wasm` test covering `RETAIN`, `STRINGS`, and flag
accumulation across coalesced segments.
Resolves
https://github.com/swiftlang/swift-package-manager/issues/10314.
https://invent.kde.org/qt/clang/llvm/-/commit/162d9f09299d3951d7c73e6aa00f2e2bac459e26
Git commit 853ab6e38bc7c796029596fcc8d314105dd823d2 by GitHub (on behalf of Hugo Trachino) on 21/07/2026 at 15:40..
[MLIR][Linalg] Fix FlattenElementwiseOp for linalg.broadcast (#210738)
Follow-up of https://github.com/llvm/llvm-project/pull/207005
The added test 'unsupported_dim_expanding_broadcast' passed with
broadcast-like 'linalg.generic' but failed with a 'linalg.broadcast'.
Generating an incorrect `linalg.collapse_shape` raising error `op number
of elements must be preserved` upon flattening. This patch prevents
broadcasting ops to be targeted by this op while allowing 0-D to N-D
broadcasting to take place as for linalg.fill.
I removed the negative test
`unsupported_rank_expanding_broadcasting_elementwise` as it had been
mentioned in the previous MR that it was repeating the above
`unsupported_broadcasting_elementwise` test.
https://invent.kde.org/qt/clang/llvm/-/commit/853ab6e38bc7c796029596fcc8d314105dd823d2
Git commit b4ef17b8c77260f8ca9229f1b764dadbf0c1348c by GitHub (on behalf of Erich Keane) on 21/07/2026 at 15:40..
[OpenACC] Better handle error overloaded ops in ForStmtChecker (#211005)
The OpenACC 'loop' constructs do a bunch of checking on the contents of
a ForStmt. However, in cases of overloaded operators, some of the
checking we assumed happened (like operators having a certain number of
args) doesn't hold in the case of errors. This patch adds some
guards to make sure we error-out if the number of args doesn't match
what we're expecting everywhere I could find it.
Fixes: #210958
https://invent.kde.org/qt/clang/llvm/-/commit/b4ef17b8c77260f8ca9229f1b764dadbf0c1348c
Git commit 15ec65a698e10cf693c158c05cf49351c9b1618c by GitHub (on behalf of Erich Keane) on 21/07/2026 at 15:40..
[OpenACC] Make sure our 'init' recipe handles nullptr_t (#211008)
The bug report shows that we missed one scalar type in our
initialization code, nullptr_t! This patch adds the initializer to make
sure it works correctly, and adds the test (plus a non-template
version).
Fixes: #210877
https://invent.kde.org/qt/clang/llvm/-/commit/15ec65a698e10cf693c158c05cf49351c9b1618c
Git commit 4d1ebeb7db966e149ad111fd325000a6cbdb3235 by Momchil Velikov on 21/07/2026 at 15:41..
[GVN] Reorganise GVN.h/GVH.cpp to improve readability and maintainability (NFC)
Over the years GVN.h/GVN.cpp has grown in size and complexity, and the order of
member functions and definitions has become somewhat arbitrary. This commit
reorganises the code to improve readability and maintainability.
* in `GVNPass` class, put private member variables first, followed by public
member functions, and then private member functions
* in `GVNPass` class: private type definitions are placed in front of the
logically related member variables (except `ValueTable` which need to be
public)
* definitions of `GVNPass::ValueTable` methods are grouped and reordered to
match the order of their declarations
* The following `GVNPass` member functions were made `private` and `LLVM_API`
removed: `getDominatorTree`, `getAliasAnalysis`, `getMemDep`,
`isScalarPREEnabled`, `isLoadPREEnabled`, `isLoadInLoopPREEnabled`,
`isLoadPRESplitBackedgeEnabled`, `isMemDepEnabled`, `isMemorySSAEnabled`,
and `salvageAndRemoveInstruction`
* `constructSSAForLoadSet` changed to take a `Dominator &`, in order to not
require access to the (now) private `getDominatorTree`
* member functions of `GVNPass` rearranged into a more logical order:
- starting with the main pass entry pount (`runImpl`) put utility member
functions in front of their callers, in order of calling (where it matters),
for example `runImpl` -> `iterateOnFunction` -> `perfromPRE`
- group functions of the same "theme" together, for example
`iterateOnFunction` + `processBlock` + `processInstrution`, or another
example, `performLoadPRE` + `performLoopLoadPRE`
- put miscelaneous helper member functions at the end
* rearrange definitions in `GVN.cpp` to match the order of declarations in
`GVN.h`
* place `static` helper functions close and in front of their callers
https://invent.kde.org/qt/clang/llvm/-/commit/4d1ebeb7db966e149ad111fd325000a6cbdb3235
Git commit 6096261b4f019ad2a533b471ba426369158b8322 by Momchil Velikov on 21/07/2026 at 15:41..
[GVN] Restructure `GVN.h` to reduce its size (NFC)
* Rename `GVNPass::ValueTable` to `GVNValueTable`, and move it out to
the `llvm` and to its own file `GVNValueTable.h` (the type is also
used by `GVNHoistPass` and it makes sense to have it in a separate
file instead of `GVNHoistPass` peeking into `GVN.h`).
* Move `GVNPass::Expression` into `llvm::GVNValueTable`.
* Move `DepKind`, `ReachingMemVal`, and `DependencyBlockInfo` to `GVN.cpp`.
* Move `GVNHoistPass` and `GVNSinkPass` to their own headers.
https://invent.kde.org/qt/clang/llvm/-/commit/6096261b4f019ad2a533b471ba426369158b8322