[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/tonykuttai/pragma-comment-copyright-cli'.
Changed from 0e695499c5b11cfa5d6e961ec711dd8ff336b155 to 85a676732733440ada434602cac3b1da6ecf8617
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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/commit/f2153eec7aaddd227c303bf0b6e6a8ccb7863857

Git commit 4686b46e2499bef1407059e3bb745cb8273c32f9 by Tony Varghese on 21/07/2026 at 12:22..
[Clang][AIX] Add -mloadtime-comment-vars support to preserve variables in the final object file.
https://invent.kde.org/qt/clang/llvm-project/-/commit/4686b46e2499bef1407059e3bb745cb8273c32f9

Git commit 88a17f54122658df97eedd62d77fe15170810eef by Tony Varghese on 21/07/2026 at 12:22..
[Clang][AIX] Handle -mloadtime-comment-vars in global var emission
https://invent.kde.org/qt/clang/llvm-project/-/commit/88a17f54122658df97eedd62d77fe15170810eef

Git commit 53bd1e0c6cbf0fc9c5864f05c4884ee1ee9bd3dd by Tony Varghese on 21/07/2026 at 12:22..
[Clang][AIX] Switch -mloadtime-comment-vars name matching to mangled IR names

Replace source-qualified name matching in matchesLoadTimeCommentVarName with
mangled IR symbol name matching via getMangledName(GlobalDecl(VD)).
https://invent.kde.org/qt/clang/llvm-project/-/commit/53bd1e0c6cbf0fc9c5864f05c4884ee1ee9bd3dd

Git commit cb4c2084f62ad62b331cf2a0645be5ab072a63a2 by Tony Varghese on 21/07/2026 at 12:22..
Apply suggestions from code review

Co-authored-by: Hubert Tong <[email protected]>
https://invent.kde.org/qt/clang/llvm-project/-/commit/cb4c2084f62ad62b331cf2a0645be5ab072a63a2

Git commit 73c98a2e1e1807eb65ba527b570efcc7886a305a by Tony Varghese on 21/07/2026 at 12:22..
[Clang][AIX] Diagnose unsupported -mloadtime-comment-vars variables
https://invent.kde.org/qt/clang/llvm-project/-/commit/73c98a2e1e1807eb65ba527b570efcc7886a305a

Git commit d02bce1e0596171b0b342b736bfaad9e4019678f by Tony Varghese on 21/07/2026 at 12:22..
Add list-parsing test cases for -mloadtime-comment-vars
https://invent.kde.org/qt/clang/llvm-project/-/commit/d02bce1e0596171b0b342b736bfaad9e4019678f

Git commit 4785a9772933299d4b306a1f8c57e7a802839ef8 by Tony Varghese on 21/07/2026 at 12:22..
nit: CodeGenModule.cpp new line deletion
https://invent.kde.org/qt/clang/llvm-project/-/commit/4785a9772933299d4b306a1f8c57e7a802839ef8

Git commit 85a676732733440ada434602cac3b1da6ecf8617 by Tony Varghese on 21/07/2026 at 12:22..
[Clang][AIX] Move -mloadtime-comment-vars validation to Sema. Add Release notes.
https://invent.kde.org/qt/clang/llvm-project/-/commit/85a676732733440ada434602cac3b1da6ecf8617
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.