[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/main'.
Changed from f3b31871e9b8e0fe07c92c91854861365ea189a4 to 06fb5203c6398df1ab72788eee91a6cea36b0a0b
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 c4b89858f8f2d52d18007bc66a3a827c6bfa8151 by GitHub (on behalf of Zeyi Xu) on 26/07/2026 at 12:37..
[clang-tidy] Fix nested macro false positives in misc-redundant-expression (#209385)

Apply the existing macro-origin filtering when comparing flattened
operands in nested expressions.

Closes https://github.com/llvm/llvm-project/issues/209373
https://invent.kde.org/qt/clang/llvm/-/commit/c4b89858f8f2d52d18007bc66a3a827c6bfa8151

Git commit 0acd2c54da07dceebb78e94d256ed211a82031b9 by GitHub (on behalf of Zeyi Xu) on 26/07/2026 at 12:51..
[clang-tidy] Support Markdown documentation in rename_check.py (#210577)

Part of https://github.com/llvm/llvm-project/issues/201242
https://invent.kde.org/qt/clang/llvm/-/commit/0acd2c54da07dceebb78e94d256ed211a82031b9

Git commit 3678fa2b1ef60938ef61228145bb9c138367cf41 by GitHub (on behalf of Yingwei Zheng) on 26/07/2026 at 13:09..
[SimplifyCFG] Don't create new unreachable BB in `turnSwitchRangeIntoICmp` (#212035)

Previously we relied on `createUnreachableSwitchDefault` to remove
incoming edges in phi nodes and update DT. However, it also creates a
new unreachable BB and updates the default destination of the switch
instruction, which is about to be replaced by a branch instruction. This
patch inlines the function and removes logic about the new BB, to make
sure the DT is updated correctly.

This issue cannot be reproduced via
-simplifycfg-require-and-preserve-domtree=1. I just found it by checking
DT in requestResimplify (will be added after fixing all existing
issues). The following test covers this case:

https://github.com/llvm/llvm-project/blob/5bc304c65494702d9d4928ff6cb369e6e6496e53/llvm/test/Transforms/SimplifyCFG/switch-range-to-icmp.ll#L38-L73
https://invent.kde.org/qt/clang/llvm/-/commit/3678fa2b1ef60938ef61228145bb9c138367cf41

Git commit 28c8e8931546057c01c517086b99a17230cd4d70 by GitHub (on behalf of Balázs Benics) on 26/07/2026 at 13:58..
[llvm][ADT] Mark llvm::IntrusiveRefCntPtr with the warn_unused attribute (#211795)

IntrusiveRefCntPtr has non-trivial ctor/dtor, thus unused variables
wouldn't trigger a warning by default. However, they should.
https://clang.llvm.org/docs/AttributeReference.html#warn-unused

Let's mark the class with this attribute get warned about them.

This would have helped catching #211518 and #211517.
Supersedes #211647.

Some tests had to be uplifted because some bots used `-Werror` for those tests.
https://invent.kde.org/qt/clang/llvm/-/commit/28c8e8931546057c01c517086b99a17230cd4d70

Git commit c94c90b2efaa46520024b2bc8aa2caa30114cd55 by GitHub (on behalf of rdevshp) on 26/07/2026 at 14:08..
[analyzer] Fix _Atomic crashes for Z3 symbolic execution (#212050)

This PR fixes _Atomic crashes for Z3 symbolic execution by passing the
types through getAtomicUnqualifiedType and getCanonicalType and skip
casting in fromCast if `FromTy == ToTy && FromBitWidth == ToBitWidth`.

Assisted-by: Codex
https://invent.kde.org/qt/clang/llvm/-/commit/c94c90b2efaa46520024b2bc8aa2caa30114cd55

Git commit 9d601915fb9d3f4e6f7ee6e369ddff7fc20ad08d by GitHub (on behalf of Nikolas Klauser) on 26/07/2026 at 14:19..
[libc++abi][NFC] Remove some XFAILs which never trigger (#211241)

The oldest library we support is from LLVM 12, so we can remove any
XFAILs for libraries built before that.
https://invent.kde.org/qt/clang/llvm/-/commit/9d601915fb9d3f4e6f7ee6e369ddff7fc20ad08d

Git commit a81db64570f94c2ca8ac0f598c0b5bba1a7ae59e by GitHub (on behalf of Jackson Stogel) on 26/07/2026 at 14:25..
[libc][cpp::string] Allocate fewer temp strings in operator= and += (#210895)

This PR generally updates `cpp::string` to avoid incidental allocations.
Specifically, it:

- Updates `opreator=(string_view)` to avoid allocating a temporary
string:
https://github.com/llvm/llvm-project/blob/67ebc4b221c3e94028b33004cd5cd08deee95048/libc/src/__support/CPP/string.h#L106-L108
- Changes `operator+=(const string&)` to accept a `string_view` so that
strings may be appended without allocation.
- Makes the `string(string_view)` constructor explicit. Before, there
were non-obvious allocations because of the implicit conversion.

As a side effect, this PR has to more carefully handle self-assignment
and self-append. This PR updates append and assignment to avoid calling
`realloc` during append / assignment, as this may invalidate input
pointers held by `string_view` if they point to data held by the string.
This also fixes self-assignment, which previously didn't work, eg
`cpp::string s = "abc"; s = s;` would zero out `s`.
https://invent.kde.org/qt/clang/llvm/-/commit/a81db64570f94c2ca8ac0f598c0b5bba1a7ae59e

Git commit 150f33ce28956d80fc7617e477bb805ab062a28a by GitHub (on behalf of Michael G. Kazakov) on 26/07/2026 at 14:51..
[libc++][pstl] Implementation of a parallel std::mismatch() based on __pstl::__parallel_find() (#209291)

This PR adds a parallel version of `std::mismatch` as one of the backend
operations.
It also provides an implementation based on `__pstl::__parallel_find()`
which does the heavy lifting.
`libdispatch` and `std_thread` backends expose this implementation under
their backend tags, while the `serial` backend redirects the calls to
the serial `std::mismatch`.

4 flavours of the function are exposed: 3-legged, 3-legged with
predicate, 4-legged, 4-legged with predicate.
3-legged flavours are implemented in the `default` (`composition`)
backend by redirecting the call to the 4-legged flavours.

Included tests check that:

- Semantics of the iterator-only functions is correct.
- Semantics of the predicated functions is correct.
- Custom types are supported by the implementation.
- The functions correctly SFINAE out when the first argument is not an
execution policy.
- The `nodiscard` policy is followed.
- The `noexcept` policy is followed.
- `static_assert` verifies iterators' categories.

Part of #99938.
https://invent.kde.org/qt/clang/llvm/-/commit/150f33ce28956d80fc7617e477bb805ab062a28a

Git commit 5104dad7a15a6369aeb15658718144881c33642f by GitHub (on behalf of Balázs Benics) on 26/07/2026 at 15:21..
[clang][CFG] Fix compound assignment evaluation order (#212115)

CompoundAssignOperator (e.g. `+=`, `-=`, `<<=`) is a distinct StmtClass
deriving from BinaryOperator, but it was not handled in the CFGBuilder
dispatch switches. As a result it fell through to the generic default
path (VisitChildren over reverse_children), which emits the LHS before
the RHS in the CFG.

Per C++17 [expr.ass]/1, all assignment operators - simple and compound -
sequence the right operand before the left operand. Route
CompoundAssignOperator through VisitBinaryOperator (and
VisitBinaryOperatorForTemporaries), whose existing isAssignmentOp()
branch already emits the RHS before the LHS, matching simple assignment.

This mirrors the class of evaluation-order defect fixed for lambda
captures in f3b31871e9b8.

rdar://183253943

Assisted-By: claude
https://invent.kde.org/qt/clang/llvm/-/commit/5104dad7a15a6369aeb15658718144881c33642f

Git commit 61517a81407d2a7353815dae7625caa1749b99ca by GitHub (on behalf of Nikolas Klauser) on 26/07/2026 at 15:46..
[libc++][NFC] Inline fstream functions into the class body (#211738)

The `fstream` member functions are all really short, so inlining them
removes quite a bit of boiler plate code.
https://invent.kde.org/qt/clang/llvm/-/commit/61517a81407d2a7353815dae7625caa1749b99ca

Git commit 286fcce7e75a4566a813c25f4ec5824533226265 by GitHub (on behalf of Emmett) on 26/07/2026 at 16:09..
[libc++][chrono] Implement LWG 4274: Allow chrono::hh_mm_ss to be constructed from unsigned durations (#209686)

**_Implementation details_**:
- Use `is_unsigned_v` instead of `numeric_limits<Rep>::is_signed`, which
is used by `chrono::abs`. `numeric_limits<Rep>::is_signed` may return
false when a custom `Rep` does not specialize `numeric_limits`. Relying
on it to detect the unsigned case could therefore be unreliable for such
a type. `is_unsigned_v` instead gives a compile-time path for built-in
unsigned types, while the sign check keeps signed types correct.

- The constructor calls `__abs_d` four times because each member is
initialized separately. This should not affect runtime performance
because the compiler should inline `__abs_d` and eliminate the repeated
calculations. We could use another helper function or helper class to
explicitly compute the absolute duration only once. However, this would
add extra glue code, and the added complexity is not worthwhile I think.

---------

Co-authored-by: A. Jiang <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/286fcce7e75a4566a813c25f4ec5824533226265

Git commit bdd8c64a2ae89cc9d860bd3b37b1bb782ccde077 by GitHub (on behalf of Victor Perez) on 26/07/2026 at 16:25..
[mlir][arith] Fold trivial integer division and remainder (#212074)

Add value-preserving folds mirroring LLVM's InstructionSimplify for the
integer division and remainder ops:

```
divui/divsi/ceildivui/ceildivsi/floordivsi(0, x) -> 0
divui/divsi/ceildivui/ceildivsi/floordivsi(x, x) -> 1
remui/remsi(0, x) -> 0
remui/remsi(x, x) -> 0
```

The self and zero-dividend cases are valid refinements because division
or remainder by zero is undefined behaviour; no overflow flags are
required. The folds return a scalar or splat constant and bail out on
shaped types with a dynamic shape.

Folding `x / 0` and `x % 0` to poison is left as a TODO: it would make
the arith dialect depend on the ub dialect to materialize `ub.poison`.

LLVM performs the same simplifications: https://godbolt.org/z/dzTjYjs4e

Verified with Alive2:

| Fold | udiv | sdiv | urem | srem |
| :--- | :---: | :---: | :---: | :---: |
| `x / x -> 1`, `x % x -> 0` | [✓](https://alive2.llvm.org/ce/z/YjZCEA)
| [✓](https://alive2.llvm.org/ce/z/BSWQrm) |
[✓](https://alive2.llvm.org/ce/z/gx5sRH) |
[✓](https://alive2.llvm.org/ce/z/VUYkr4) |
| `0 / x -> 0`, `0 % x -> 0` | [✓](https://alive2.llvm.org/ce/z/keqeCZ)
| [✓](https://alive2.llvm.org/ce/z/jyf5wm) |
[✓](https://alive2.llvm.org/ce/z/fZa6ND) |
[✓](https://alive2.llvm.org/ce/z/fo6ss8) |

----

Code generated by Claude Code.

Signed-off-by: Víctor Pérez Carrasco <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/bdd8c64a2ae89cc9d860bd3b37b1bb782ccde077

Git commit 14304efe26ea430029ab00fb345f041b62069097 by GitHub (on behalf of Alexis Engelke) on 26/07/2026 at 17:07..
[IR] Remove deprecated BranchInst (#212095)

The migration to UncondBr/CondBr was finished in LLVM 23. BranchInst has
no remaining uses in-tree. Let's finish this by removing BranchInst.

https://discourse.llvm.org/t/rfc-split-branchinst-into-uncondbr-and-condbr/90022

Deprecated with: https://github.com/llvm/llvm-project/pull/187314
https://invent.kde.org/qt/clang/llvm/-/commit/14304efe26ea430029ab00fb345f041b62069097

Git commit 06fb5203c6398df1ab72788eee91a6cea36b0a0b by GitHub (on behalf of Nico Weber) on 26/07/2026 at 17:11..
Revert "gn build: Support building debug binaries from a release build directory." (#211294)

This reverts commit 611d015f0030e0d4f1b3bd2270205f6f6b6e20eb.

Breaks building, see
https://github.com/llvm/llvm-project/pull/197843#issuecomment-5025645797
https://invent.kde.org/qt/clang/llvm/-/commit/06fb5203c6398df1ab72788eee91a6cea36b0a0b
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.