[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/jtstogel/realpath/string-view-assign'.
Changed from be43dcec79a36bf513adca56172372e2c4ea0d05 to 754e93c72ec06172c754e857218e11d9b670babc
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 9c756612c7a0231ba40982ab2c7f8b6cf8fb895b by GitHub (on behalf of Florian Hahn) on 24/07/2026 at 11:20..
[LV] Simplify VPCostContext ctor by using VFSelectionContext (NFC). (#211765)

VFSelectionContext provides most fields needed. Pass it directly and
access its fields.
https://invent.kde.org/qt/clang/llvm/-/commit/9c756612c7a0231ba40982ab2c7f8b6cf8fb895b

Git commit 98195e0458dd5ec037785a6f861c6402bec778b3 by GitHub (on behalf of Twice) on 24/07/2026 at 11:34..
[MLIR][Python] Make Python-defined dialect loading context-aware (#210501)

Python-defined dialect loading currently relies on
`Dialect._mlir_module` to infer whether a dialect has already been
loaded. This state belongs to the Python dialect class rather than an
MLIR context.

Consequently, loading the same dialect after switching contexts requires
`reload=True`, while reloading it in a context where it is already
present can hit the operation registration assertion reported in
#210053.

This patch adds `mlirContextGetLoadedDialect` (following
https://github.com/llvm/lighthouse/pull/228#discussion_r3589792891) to
the C API and exposes it as `Context.is_dialect_loaded`.
`Dialect.load()` now queries the active context:
- loading a dialect more than once in the same context raises a
`RuntimeError`;
- loading the same Python-defined dialect in another context succeeds
without a `reload` flag.

The `reload` parameter is semantically wrong (mentioned in
https://github.com/llvm/lighthouse/pull/228#discussion_r3586672116) thus
removed from the API as a small breaking change. Usually, users who are
using `reload` can just remove it and everything will work fine.

Fixes #210053.
Assisted by GPT 5.6 Sol (for writing test cases).
https://invent.kde.org/qt/clang/llvm/-/commit/98195e0458dd5ec037785a6f861c6402bec778b3

Git commit b82563ac9ace38a1f4217c573fd63fa2d94eccd0 by GitHub (on behalf of Krzysztof Parzyszek) on 24/07/2026 at 11:51..
[OpenMP] Fix build error after 19857baa71 (#211771)

Some builders using older versions of gcc encounter this issue:

```
llvm/include/llvm/Frontend/OpenMP/OMP.h:138:14: error: ‘Base’ has not been declared
  138 |   assert(Set.Base::test(At));
      |              ^~~~
```

E.g. https://lab.llvm.org/buildbot/#/builders/10/builds/32524
https://invent.kde.org/qt/clang/llvm/-/commit/b82563ac9ace38a1f4217c573fd63fa2d94eccd0

Git commit 81cedf1e2060dbc2c5be43a6be0c86d6ba76df8d by GitHub (on behalf of Krisitan Erik Olsen) on 24/07/2026 at 11:53..
[VPlan] Fix sentinel assertion when broadcasting invoke results (#210464)

VPTransformState::get broadcasts a scalar value by inserting after the
last scalarized instruction using
std::next(BasicBlock::iterator(LastInst)). When LastInst is a terminator
like invoke, std::next advances past the end of the block, hitting the
!isKnownSentinel() assertion.

Use Instruction::getInsertionPointAfterDef which correctly handles PHIs,
invokes, and regular instructions, matching the pattern already used in
VectorCombine.cpp.

Fixes #210342
https://invent.kde.org/qt/clang/llvm/-/commit/81cedf1e2060dbc2c5be43a6be0c86d6ba76df8d

Git commit 82488f0e7119dd05cd63329458733e8c295f0338 by GitHub (on behalf of Jinjie Huang) on 24/07/2026 at 11:55..
[BOLT] Fix pwrite assertion failure via a new safePWrite wrapper (#198569)

Background: Currently, BOLT seems to implicitly assume that the .dynsym
section is located at a low offset within the binary, calling pwrite()
directly to update it.

Issue: In scenarios where the binary has been modified by tools like
patchelf, sections like .dynsym may be moved to a high offset area. This
can lead to a violation of the Offset + Size <= Pos assertion in
pwrite(). A typical scenario is when the previous eh_frame_header update
moves the stream cursor (pos) back to a low
offset([code](https://github.com/llvm/llvm-project/blob/llvmorg-23-init/bolt/lib/Rewrite/RewriteInstance.cpp#L6387)).

Fix: This patch resolves the pwrite assertion failure via a new
safePWrite wrapper, which introduces a defensive check that verifies and
conditionally adjusts the stream position. A corresponding test case has
also been added.
https://invent.kde.org/qt/clang/llvm/-/commit/82488f0e7119dd05cd63329458733e8c295f0338

Git commit 62b809a37aac6cf2f64e99e9efba89dd8731920d by GitHub (on behalf of Louis Dionne) on 24/07/2026 at 12:18..
[libc++] Consistently install Python and dependencies across macOS CI jobs (#211659)

On the macOS self-hosted runners, we need to install dependencies via
Homebrew and pinning the Xcode version is good for reproducibility. This
applies the guidelines documented in #211622 to libc++'s CI jobs.
https://invent.kde.org/qt/clang/llvm/-/commit/62b809a37aac6cf2f64e99e9efba89dd8731920d

Git commit 697f0f3b20d371d9e417891d9cdfb6a3613d7828 by GitHub (on behalf of Kerry McLaughlin) on 24/07/2026 at 12:37..
[NFC] Regenerate CHECK lines in scalable-strict-fadd.ll (#211573)
https://invent.kde.org/qt/clang/llvm/-/commit/697f0f3b20d371d9e417891d9cdfb6a3613d7828

Git commit dd1f97501758ccf5952f862f46f0ba15cbd23dcf by GitHub (on behalf of Jinsong Ji) on 24/07/2026 at 13:08..
[VectorCombine] Fix infinite loop in foldShuffleToIdentity (#211717)

PR #211508 ("foldShuffleToIdentity - ensure we push any created
instructions to the WorkList") started re-queueing every instruction
created by generateNewInstTree onto the VectorCombine worklist. When the
regenerated tree contains a bitcast, re-queueing the bitcast's operand
lets foldBitcastShuffle sink the bitcast back into a shuffle(bitcast),
which foldShuffleToIdentity then re-matches as the same superfluous
identity. On a widen/concat shuffle chain feeding a bitcast the two
folds
ping-pong and the pass never reaches a fixed point (observed as an opt
-O3 hang/timeout).

Keep the WorkList threading from PR #211508 (it enables further folds,
e.g. the improved intrinsics_minmax and two_concats cases) but don't
re-queue the operand of a regenerated bitcast, which is the only push
that feeds the foldBitcastShuffle <-> foldShuffleToIdentity loop.

Add an X86 regression test that previously looped and now terminates.

Co-Authored-By: Claude Opus 4.8 <[email protected]>

Co-authored-by: Claude Opus 4.8 <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/dd1f97501758ccf5952f862f46f0ba15cbd23dcf

Git commit fdbbcba77d625a5c403aea78b5b7fc64547fa558 by GitHub (on behalf of Hocky Yudhiono) on 24/07/2026 at 13:22..
[mlir][affine] Add affine.for verifier and move arguments check earlier (#206685)

Fixes #206628 crash by adding an earlier body argument verifier for
`affine.for`. This crash is caused because `LoopLikeOpInterface`
verifier would call `getRegionIterArgs()` and assumed induction var of
`affine.for` exists.
https://invent.kde.org/qt/clang/llvm/-/commit/fdbbcba77d625a5c403aea78b5b7fc64547fa558

Git commit 42176da77a4653a2fb55a0bbead0296fe6873c7d by GitHub (on behalf of Jon Roelofs) on 24/07/2026 at 13:33..
[llvm][AArch64] Fix the location of PAuth_LR AUT CFI (#211702)

Unlike PAC CFI, we do not have the same unwinder constraint on PAuth_LR
CFI occurring before the PAC instruction. For AUT CFI, like other CFI
opcodes, these should always occur after the instruciton that they
reference.
https://invent.kde.org/qt/clang/llvm/-/commit/42176da77a4653a2fb55a0bbead0296fe6873c7d

Git commit 1ada3044291aa3215b9deb2aeec3e952c13c2813 by GitHub (on behalf of Matsu) on 24/07/2026 at 13:37..
[mlir][OpenACC] Keep ThreadY active for inner-combine-fed worker reductions (#211696)

Example:
```fortran
res = 0
!$cuf kernel do(2) <<< *, (32,8) >>> reduce(+:res)
do j2 = 1, n2
  do j1 = 1, n1
    res = res + a(j1, j2)
  end do
end do
```
In this code the reduction accumulator is per-(block_y, thread_y): each
worker row's shared slot is filled by an inner block-scoped combine, so
the rows hold distinct partials. The final combine into the result was
classified as not "worker-private" (block_y+thread_y into a global
dest), so it fell back to the ThreadY row-zero path and dropped every
worker but row 0 — a 2D SUM returned -1 instead of -4.
Fix: keep ThreadY active for a block_y+thread_y accumulator that is fed
by an inner block-scoped combine (distinct per-worker partials). A plain
worker accumulate still lowers to a worker-wide all_reduce that
broadcasts the total, so it correctly stays row-zero and is not
multiplied by the worker count.
https://invent.kde.org/qt/clang/llvm/-/commit/1ada3044291aa3215b9deb2aeec3e952c13c2813

Git commit ba42905dfdb184fe054591bb81384efbb8a6fd46 by GitHub (on behalf of Jon Roelofs) on 24/07/2026 at 13:43..
[llvm][AArch64] Add a test for -aarch64-cfi-llvm-set-ra-sign-state='s default (#211791)
https://invent.kde.org/qt/clang/llvm/-/commit/ba42905dfdb184fe054591bb81384efbb8a6fd46

Git commit af795ffee92313af4a439919264737d4d9d7886c by GitHub (on behalf of Dragan Mladjenovic) on 24/07/2026 at 13:47..
[AMDGPU] Fix pre-GFX11 llvm.fptosi.sat.i16.f32 lowering (#211703)
https://invent.kde.org/qt/clang/llvm/-/commit/af795ffee92313af4a439919264737d4d9d7886c

Git commit 3cf44478fcf54c8996c88c1214d2170c69d4a01f by GitHub (on behalf of Alexey Bataev) on 24/07/2026 at 14:04..
[ConstantFolding]Fold llvm.powi via square-and-multiply (#210771)

Compute constant-folded powi using APFloat multiplies in the operand's
own semantics (square-and-multiply), matching the expansion
ExpandPowI generates in SelectionDAGBuilder, instead of routing
through std::pow via double/float conversion.
https://invent.kde.org/qt/clang/llvm/-/commit/3cf44478fcf54c8996c88c1214d2170c69d4a01f

Git commit eeeaad979cc68b19bdd3ed27db579d2f8974f3a8 by GitHub (on behalf of Orlando Cazalet-Hyams) on 24/07/2026 at 14:07..
Add !metadata_section_kind global variable metadata (#211524)

Similar to !exclude in that this attempts to guide section + flag
choices in a generic/abstract way.

`!exclude` tells LLVM to use the generic `SectionKind::Exclude` for the
globals. Likewise, `!metadata_section_kind` tells LLVM to use
`SectionKind::Metadata`.

The added docs go into a little more detail.

This is needed for the dynamic debugging feature, otherwise there's no
way to avoid `SHF_EXCLUDE` or `SHF_ALLOC` flags being added to the
section without special handling based on its name. We've moved to using
a new section type for dynamic debugging and we don't want to rely on
the name, which may be omitted.
https://invent.kde.org/qt/clang/llvm/-/commit/eeeaad979cc68b19bdd3ed27db579d2f8974f3a8

Git commit ee7ea10c141cbf69ff10a25bfde05bd8e67b295f by GitHub (on behalf of rdevshp) on 24/07/2026 at 14:20..
[CodeGen] PHIEliminationImpl::LowerPHINode: Fix assertion failure when all phi operands are undefined (#209013)

IncomingReg is only set to a register when allPhiOperandsUndefined does
not hold. Changes PHIEliminationImpl::LowerPHINode to check IncomingReg
before using it for debug phi.

Fixes #206324

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

Git commit d1f2fc598109ecd511b526b1021f1474eb1b33f0 by GitHub (on behalf of Abhina Sree) on 24/07/2026 at 14:27..
[SystemZ][z/OS] Add the OF_Text flag to read .ll files and parse assembly files (#211782)

This patch allows us to parse .ll files in verify-uselistorder correctly
and fixes failures in any testcase that uses this tool.
https://invent.kde.org/qt/clang/llvm/-/commit/d1f2fc598109ecd511b526b1021f1474eb1b33f0

Git commit d610744c92b1edcf9330b2690cdb2e2053721a5f by GitHub (on behalf of Felipe de Azevedo Piovezan) on 24/07/2026 at 14:28..
[lldb] Speedup AppleObjCRuntimeV2 UpdateIfNeeded (#211774)

This converts a loop calling Process::ReadMemory into a single call to
Process::ReadMemoryRanges.
https://invent.kde.org/qt/clang/llvm/-/commit/d610744c92b1edcf9330b2690cdb2e2053721a5f

Git commit 6636eb9689ffbd0c9dd80a153b6c10ca3cea9f88 by GitHub (on behalf of Simon Pilgrim) on 24/07/2026 at 14:38..
[X86] Truncate (v4i32 (vzext_movl (v2i64 bitcast (scalar_to_vector (i64 X))))) (#211798)

Noticed while triaging #211619 - truncate the i64 to i32 directly to avoid extra shuffles
https://invent.kde.org/qt/clang/llvm/-/commit/6636eb9689ffbd0c9dd80a153b6c10ca3cea9f88

Git commit a2d74bfe386695ee1a17ba3b60367fb79c3bfdfe by GitHub (on behalf of Caroline Newcombe) on 24/07/2026 at 14:43..
[flang][OpenMP] Implement the error directive (#206175)

## [flang][OpenMP] Implement the `error` directive

### Summary

Implements the OpenMP `error` directive (OpenMP 5.1, 2.5.4) in Flang.
The directive prints a message and, with `severity(fatal)`, stops.
Handling depends on the `at` clause:

- **`at(compilation)`** (the default): handled in semantics. Emits a
compile-time warning or error and produces no IR.
- **`at(execution)`**: lowered to a new `omp.error` op, which becomes a
call to `__kmpc_error`.

Before this patch the directive was unimplemented and hit a `not yet
implemented: OmpErrorDirective` error during lowering.

Fixes #204240.

### Details

Changes go through the compiler pipeline.

**Flang semantics**
- `Enter(OmpErrorDirective)` emits the compile-time diagnostic for the
`at(compilation)` form, using the directive's severity and the `MESSAGE`
text when present.
- `Enter(OmpClause::Message)` checks that the `MESSAGE` expression is a
scalar, default-kind `CHARACTER`, which is required to pass it to the
runtime as a `const char*`.

**Flang lowering**
- `genErrorDirective` lowers the `at(execution)` form only.
- A constant message is stored in the `message` attribute. A
non-constant message is copied to a null-terminated buffer
(`genNullTerminatedString`) and passed as the `message_expr` operand,
because `__kmpc_error` expects a NUL-terminated string.

**New `omp.error` op (MLIR OpenMP dialect)**
- Adds a `ClauseSeverity` enum (`warning = 1`, `fatal = 2`, matching the
`__kmpc_error` argument) and `ClauseSeverityAttr`.
- `omp.error` takes a required `severity` attribute and an optional
message, given either as:
  - `message` — a constant string attribute, or
  - `message_expr` — a pointer to a null-terminated string.
- A verifier rejects providing both `message` and `message_expr`.

**MLIR → LLVM IR translation**
- Translates `omp.error` to `__kmpc_error(ident_t *, i32 severity, ptr
message)`.

**OMPIRBuilder**
- Adds `OpenMPIRBuilder::createError(...)`, which builds the call, maps
`fatal`→`2` and `warning`→`1`, and passes a null pointer when there is
no message.

### Tests

- **Parser** (`error-unparse.f90`): unparse and parse-tree output.
`at(compilation) severity(fatal)` cases that would stop compilation were
moved to `at(execution)`.
- **Semantics** (`Semantics/OpenMP/error.f90`): compilation
warning/error/default-severity cases, plus the new `MESSAGE` type, rank,
and kind errors.
- **Lowering** (`Lower/OpenMP/error.f90`): constant message, no message,
empty message, runtime `message_expr`, and `at(compilation)` cases that
must not produce `omp.error`. The old `Lower/OpenMP/Todo/error.f90` test
is removed.
- **MLIR** (`ops.mlir`, `invalid.mlir`): round-trip of each `omp.error`
form and the both-messages verifier error.
- **LLVM IR** (`openmp-llvm.mlir`): `__kmpc_error` calls for warning and
fatal, constant and runtime messages, and the null-message cases.

Assisted-by: Github Copilot
https://invent.kde.org/qt/clang/llvm/-/commit/a2d74bfe386695ee1a17ba3b60367fb79c3bfdfe

Git commit 8c9c62d0899ce115dcf469c1bcbf694f2b6db774 by GitHub (on behalf of Jonas Devlieghere) on 24/07/2026 at 14:46..
[lldb] Skip the WebAssembly function header for frame recognizers (#211806)

A frame recognizer restricted to the first instruction matches when the
frame's PC equals the function's start address. On WebAssembly a
function begins with a non-executable local variable header, so the
symbol's start address is never a value the PC can take and such
recognizers never matched.

Route the start address through Architecture::SkipFunctionHeader, which
already maps a function start past this header for breakpoints and
disassembly, so the comparison uses the first executable instruction.
https://invent.kde.org/qt/clang/llvm/-/commit/8c9c62d0899ce115dcf469c1bcbf694f2b6db774

Git commit b2307cd9a05cb61bc9af74777de744a92479088f by GitHub (on behalf of Jonas Devlieghere) on 24/07/2026 at 14:47..
[lldb][test] Skip frame-recognizer argument tests on WebAssembly (#211807)

The recognizer reads arguments through $arg1/$arg2, which resolve via
argument registers. WebAssembly has no argument registers and no ABI
plugin, and these tests build without debug info, so there is no
location to read the arguments from and they come back as zero.
https://invent.kde.org/qt/clang/llvm/-/commit/b2307cd9a05cb61bc9af74777de744a92479088f

Git commit 1597ca6a839f188334bad6cd7f93a4b61159d122 by GitHub (on behalf of Louis Dionne) on 24/07/2026 at 14:48..
[libc++] Fix Python selection in the macOS benchmark jobs (#211812)

The macOS benchmark jobs install python 3.14 via Homebrew but added the
wrong prefix (<prefix>/libexec/bin) instead of <prefix>/bin to the PATH.
https://invent.kde.org/qt/clang/llvm/-/commit/1597ca6a839f188334bad6cd7f93a4b61159d122

Git commit dc21971950a10be027adad6b4d347a1ef7f9bd3d by GitHub (on behalf of Alex Duran) on 24/07/2026 at 14:49..
[OFFLOAD][L0] Properly consume errors in program validation (#211799)

Some of the program unittests were failing because errors weren't
consumed properly.
https://invent.kde.org/qt/clang/llvm/-/commit/dc21971950a10be027adad6b4d347a1ef7f9bd3d

Git commit 9ee615b7ab84bd3e3091f7185ac09c8e01f7c495 by GitHub (on behalf of Arseniy Obolenskiy) on 24/07/2026 at 14:50..
[AMDGPU] Fix incorrect grid_dims constant folding for reqd_work_group_size (#211285)

reqd_work_group_size(X, Y, 1) does not guarantee the dispatch runs with
work_dim == 2, since the spec still allows enqueuing with work_dim == 3
and a unit-size Z dimension. Only fold hidden_grid_dims to a constant
when Z != 1 (work_dim must be 3)

Otherwise tighten the range instead of assuming an exact value

Alterative approach to https://github.com/llvm/llvm-project/pull/205866
without killing constant folding
https://invent.kde.org/qt/clang/llvm/-/commit/9ee615b7ab84bd3e3091f7185ac09c8e01f7c495

Git commit 1f896524c95a9ed02fc8da970811fe6310475093 by GitHub (on behalf of Florian Hahn) on 24/07/2026 at 15:02..
[ConstraintElim] Precommit additional tests (NFC). (#211802)

Tests include
  * shl nuw tests with known bounds.
  * sadd.with.overflow.
  * decompose failures due to precondiitons
  * using info from latch condition
https://invent.kde.org/qt/clang/llvm/-/commit/1f896524c95a9ed02fc8da970811fe6310475093

Git commit 5018aebcde6bcb3a29e3e10bd332865289e01e29 by GitHub (on behalf of Fabrice de Gans) on 24/07/2026 at 15:08..
[VPlan] Drop redundant member LLVM_ABI annotations (#205767)

Classes that are annotated with `LLVM_ABI[_FOR_TEST]` should not have
individual member annotations. This PR drops the redundant member
annotations.

The effort to build LLVM as a dylib is tracked in #109483.
https://invent.kde.org/qt/clang/llvm/-/commit/5018aebcde6bcb3a29e3e10bd332865289e01e29

Git commit f9b12955f891bb086d12309d89656821d776e858 by GitHub (on behalf of Arseniy Obolenskiy) on 24/07/2026 at 15:16..
[AMDGPU] Use erase_if for Kills transfer in SIOptimizeVGPRLiveRange (#211800)
https://invent.kde.org/qt/clang/llvm/-/commit/f9b12955f891bb086d12309d89656821d776e858

Git commit a443ddb9b096aff4a0c9dea18df4e2ce6bc7bc85 by GitHub (on behalf of Andrei Elovikov) on 24/07/2026 at 15:22..
[NFC][VPlan][Tests] Some CHECKs cleanup (#211425)

* Fix RUN-line in `VPlan/AArch64/call-decisions.ll` to work with UTC

"; -RUN" was resulting in

```
Error: Failed to update test <...>/call-decisions.ll
Traceback (most recent call last):
  File "<...>/update_analyze_test_checks.py", line 228, in main
    update_test(opt_basename, ti)
  File "<...>/update_analyze_test_checks.py", line 131, in update_test
    check_label_prefix = "VPlan for loop in " if regex == common.VPLAN_RE else ""
UnboundLocalError: local variable 'regex' referenced before assignment
```

* Regenerate CHECKs in VPlan/X86/vplan-vp-intrinsics.ll with UTC

* Split VPlan/interleave-and-scalarize-only.ll in two (VPlan/LLVM dumps)
to be able to use UTC plus use `-vplan-print-metadata=false` for VPlan
version

* Remove stale `CHECK-NOT`

Probably missed in `-debug` -> `-vplan-print-after` transition.
https://invent.kde.org/qt/clang/llvm/-/commit/a443ddb9b096aff4a0c9dea18df4e2ce6bc7bc85

Git commit 26f5da13928ee6bd6bc2f325d13185c83a5d70eb by GitHub (on behalf of Abhina Sree) on 24/07/2026 at 15:27..
[SystemZ][z/OS] Add text flag when parsing json (#211805)

This patch adds the text flag when we are opening json files to parse. 
This fixes two lit failures on z/OS
https://invent.kde.org/qt/clang/llvm/-/commit/26f5da13928ee6bd6bc2f325d13185c83a5d70eb

Git commit 044d3462c6e9c545ba426ce2574e13a44ad69cf3 by GitHub (on behalf of Matsu) on 24/07/2026 at 15:29..
[flang] Set nsw on FIRToSCF loop induction increments (#211796)

Example:
```fortran
subroutine sum_loop(a, n)
  integer :: a(n), i
  do i = 1, n
    a(i) = i
  end do
end
```

In this code, the DO induction variable `i` is stepped each iteration.
`FIRToSCF` lowered that increment to a plain `arith.addi` with no
overflow flag — unlike the CFG-conversion path (`ControlFlowConverter`),
which marks it `overflow<nsw>` — so LLVM must assume the IV may wrap and
cannot form an affine recurrence, blocking analysis/vectorization of
loops lowered via `fir-to-scf`.

Fix: add a `set-nsw` pass option (default `true`, disabled under
`-fwrapv`) and mark the typed-IV, reconstructed final-value, and
`iterate_while` increments `nsw`, matching `ControlFlowConverter`;
`FirToSCF` lit tests updated accordingly.
https://invent.kde.org/qt/clang/llvm/-/commit/044d3462c6e9c545ba426ce2574e13a44ad69cf3

Git commit 570a19d1a9eff263e815c794ea015bd65c62ab66 by GitHub (on behalf of earnol) on 24/07/2026 at 15:29..
[analyzer] Fix false positive in strchr/strrchr with constant args (#210154)

When both the source string and the search target are compile-time
constants, determine the outcome precisely and only emit the feasible
branch (found or not-found).
Handles strchr, strrchr, strchrnul, memchr, strstr, and strpbrk.

Fixes #209905

Assisted by: Kiro-cli

---------

Co-authored-by: Vladislav Aranov <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/570a19d1a9eff263e815c794ea015bd65c62ab66

Git commit 1ad3b9eff99a5f9e0fe9075aa936d4dc439500e9 by GitHub (on behalf of Matt Arsenault) on 24/07/2026 at 15:38..
cross-project-tests: Migrate amdgpu tests to use subarch triples (#210115)
https://invent.kde.org/qt/clang/llvm/-/commit/1ad3b9eff99a5f9e0fe9075aa936d4dc439500e9

Git commit 7a3208c8550564489037111f1d85a01f18a196a2 by GitHub (on behalf of Zhen Wang) on 24/07/2026 at 15:41..
[flang][cuda] Emit data transfers for whole-array and function-result managed assignments (#211640)

Assignments that read or write device/managed/unified data are
synchronous data transfers on stream 0 that wait for previously launched
kernels. Previously, whole-array managed = managed / host = managed
assignments, and assignments consuming a managed/unified/device function
result, were lowered as host copies (hlfir.assign), which can race an
asynchronous kernel that produced the data.

Emit cuf.data_transfer for these cases. Element-wise (scalar) accesses
and right-hand-side expressions involving managed data remain host
operations (the latter avoids materializing a temporary), and a
whole-allocatable left-hand side keeps reallocation semantics.
https://invent.kde.org/qt/clang/llvm/-/commit/7a3208c8550564489037111f1d85a01f18a196a2

Git commit 227ef987a7d0e9c88bf8e06d038565bda09958b5 by GitHub (on behalf of Matt Arsenault) on 24/07/2026 at 15:41..
clang/AMDGPU: Migrate cc1 tests to subarch triples (1) (#211822)

Mechanically rewrite cc1 test RUN lines from the old
`-triple amdgcn... -target-cpu gfxNNN` form to the new subarch triple
form (e.g. `-triple amdgpu9.00-amd-amdhsa`), dropping the now-redundant
-target-cpu. The subarch encodes the exact target, so the emitted IR no
longer carries a "target-cpu" function attribute; autogenerated CHECK
lines are regenerated accordingly.

This batch covers the small CodeGen, Frontend, Layout, and Preprocessor
test directories.

Co-authored-by: Claude (Opus 4.8) <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/227ef987a7d0e9c88bf8e06d038565bda09958b5

Git commit fb420255a43d5eeb19cf8fa7905e94561c33f442 by GitHub (on behalf of Alexis Engelke) on 24/07/2026 at 15:41..
[IR][NFC] Remove vtables from AnalysisResultConcept (#211810)

Similar to #209414 but for AnalysisResultConcept. This avoids vtables
for every analysis result type.

As a side effect, this improves the build times of PassBuilder.cpp by
~8% due to substantially fewer unique_ptr instantiations (instantiating
unique_ptr is expensive, at least with libstdc++).
https://invent.kde.org/qt/clang/llvm/-/commit/fb420255a43d5eeb19cf8fa7905e94561c33f442

Git commit f1bf19b05493d54b1c5c5d938e8ea2c2d92e8130 by GitHub (on behalf of Arseniy Obolenskiy) on 24/07/2026 at 15:43..
[AMDGPU] Avoid quadratic MapVector::erase in SIFixSGPRCopies (#211740)
https://invent.kde.org/qt/clang/llvm/-/commit/f1bf19b05493d54b1c5c5d938e8ea2c2d92e8130

Git commit e6c604edc609ed9dfa7c701f6bc96001f28ac94d by GitHub (on behalf of Nico Weber) on 24/07/2026 at 15:44..
[gn build] Port 19857baa713d (#211835)
https://invent.kde.org/qt/clang/llvm/-/commit/e6c604edc609ed9dfa7c701f6bc96001f28ac94d

Git commit 13040fb13addf9aa4631762640fe79b5e0c306c3 by GitHub (on behalf of Nico Weber) on 24/07/2026 at 15:44..
[gn build] Port 10e0a2ee03b0 (#211834)
https://invent.kde.org/qt/clang/llvm/-/commit/13040fb13addf9aa4631762640fe79b5e0c306c3

Git commit 165121e8b1d6dba116a8103c08597f585f2e8d60 by GitHub (on behalf of Sayan Sivakumaran) on 24/07/2026 at 15:49..
Reland "[SimplifyCFG] Simplify switch default branch when branch proves operand value" (#211427)

Original PR: https://github.com/llvm/llvm-project/pull/206597
Revert PR: https://github.com/llvm/llvm-project/pull/211341

Relands abe757b. It was reverted due to my PR failing to update PHINode
entries in the default block, causing invalid IR in certain
circumstances. Original reproducer can be found
[here](https://github.com/llvm/llvm-project/pull/206597#issuecomment-5049789740).

We will now properly remove a PHINode entry if we remove a path from the
switch's block to the default block.

-------------------------------------------------------

If the default branch of a switch proves that there is only one value
that can be sent to the default branch, we can transform the default
branch into an explicit case of the switch. This can assist in further
simplification of the CFG during the simplification loop.

For example, we should be able to create an explicit case for the
default block in cases like the following:

```llvm-ir
switch_bb:
    switch i8 %x, label %default_bb [...]

default_bb:
    %cmp = icmp eq i8 %x, 1
    call void llvm.assume(i1 %cmp) ; Implies %x must be 1
```

Related to #50665.
https://invent.kde.org/qt/clang/llvm/-/commit/165121e8b1d6dba116a8103c08597f585f2e8d60

Git commit 22116c946aa8078cee8d0c5efa49874c6264e92e by GitHub (on behalf of Matt Arsenault) on 24/07/2026 at 15:53..
clang/AMDGPU: Migrate cc1 tests to subarch triples (2) (#211823)

Rewrite CodeGenCUDA cc1 test RUN lines from `-triple amdgcn...
-target-cpu gfxNNN` to the new subarch triple form, dropping the redundant
-target-cpu.
Autogenerated CHECK lines are regenerated. Tests that intentionally
assert the "target-cpu" function attribute are left unchanged.

Co-authored-by: Claude (Opus 4.8) <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/22116c946aa8078cee8d0c5efa49874c6264e92e

Git commit b7fa8b21227c7c6a1c625db9ceab4acb485c2e6b by GitHub (on behalf of Simon Pilgrim) on 24/07/2026 at 16:10..
[VectorCombine] Fold binop(shuffle(V1, Mask), shuffle(V2, Mask)) -> shuffle(binop(V1, V2), Mask) (#211530)

This is a general, cost driven version of the InstCombine fold (which
was limited to non-length changing cases in #211115), and also permits
folds with multiuse shuffles.

Fixes #210948
https://invent.kde.org/qt/clang/llvm/-/commit/b7fa8b21227c7c6a1c625db9ceab4acb485c2e6b

Git commit 57af943dfefaceb40b0f4deac2895cd4d5e6fd39 by GitHub (on behalf of Matt Arsenault) on 24/07/2026 at 16:24..
clang/AMDGPU: Migrate cc1 tests to subarch triples (3) (#211825)

Rewrite CodeGenHIP cc1 test RUN lines to the new subarch triple form,
dropping the redundant -target-cpu, and regenerate autogenerated CHECK
lines. Tests whose behavior depends on the implicit wave32 default
(which is not enabled by a bare subarch triple) are left for a later change.

Co-authored-by: Claude (Opus 4.8) <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/57af943dfefaceb40b0f4deac2895cd4d5e6fd39

Git commit 0dd2c577357ab253eab6712e74a2a5c39b58482c by GitHub (on behalf of vangthao95) on 24/07/2026 at 16:27..
AMDGPU/GlobalISel: Add lowering for bf16 fpext (#210887)

Add lowering for bf16 fpext based on SDAG's ISD::BF16_TO_FP lowering.
https://invent.kde.org/qt/clang/llvm/-/commit/0dd2c577357ab253eab6712e74a2a5c39b58482c

Git commit f7c908b048fe8637fea7346cae808df38075b018 by GitHub (on behalf of Chi-Chun, Chen) on 24/07/2026 at 16:33..
[flang][OpenMP] Check DEFAULT(NONE) on metadirective loop variants (#210172)

Flang does not enforce `DEFAULT(NONE)` for variables referenced in a
loop
associated with a standalone METADIRECTIVE. Consequently, it accepts
invalid
programs when a potentially selectable loop variant specifies
DEFAULT(NONE) but
omits a referenced variable from its data-sharing clauses. This change
checks the
associated loop for each potentially selectable `DEFAULT(NONE)` variant
and
diagnoses missing data-sharing attributes as it does for ordinary OpenMP
loop
constructs.

Standalone metadirectives and their associated loops are separate
parse-tree
nodes. For example:

```fortran
!$omp metadirective &
!$omp& when(implementation={vendor(llvm)}: &
!$omp& parallel do default(none) shared(n, a)) default(nothing)
do i = 1, n
  a(i) = x
end do
```

Unlike an ordinary `PARALLEL DO`, the loop is not nested under the
directive:

```text
METADIRECTIVE
`-- WHEN
    `-- PARALLEL DO DEFAULT(NONE) SHARED(n, a)

DO
`-- a(i) = x
```

Name resolution therefore leaves the variant context before visiting the
loop and
does not diagnose the missing data-sharing attribute for `x`.

After associating a metadirective with its loop, validate DEFAULT(NONE)
for each
potentially selectable loop variant. Preserve the existing rules for
predetermined and explicit data-sharing attributes, static locals,
nested
constructs, specification expressions, and statically inapplicable
variants.

Assisted with codex.
https://invent.kde.org/qt/clang/llvm/-/commit/f7c908b048fe8637fea7346cae808df38075b018

Git commit 1dbb1b1361c852d3369ebb00e760d0182aa81e17 by GitHub (on behalf of Jonas Devlieghere) on 24/07/2026 at 16:38..
[lldb] Restore autosense for expedited memory-cache address parsing (#211846)

PR #211495 changed the expedited "memory:<addr>=<bytes>" address parse
in SetThreadStopInfo from autosense (radix 0) to explicit base 16.
debugserver sends this address with a "0x" prefix, and
StringRef::getAsInteger only strips that prefix in autosense mode. With
an explicit base 16 the parse stops at the 'x' and fails, so the
expedited stack bytes are never seeded into the L1 memory cache.

Restore BASE_AUTOSENSE here, matching the documented format for this key
(0x hex, 0 octal, otherwise decimal). Fixes TestExpeditedStackMemory.py.
https://invent.kde.org/qt/clang/llvm/-/commit/1dbb1b1361c852d3369ebb00e760d0182aa81e17

Git commit 0220c07a94012b9dce9250addac6a8ee1f674b21 by GitHub (on behalf of Alexey Bataev) on 24/07/2026 at 16:44..
[SLP]Fix crash on duplicate switch successors in alias-check versioning

A terminator with two edges to the same block produced duplicate
dominator-tree insert/delete updates for that edge, tripping the
unbalanced-operations assertion. Deduplicate successors before
building the update list.

Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/211852
https://invent.kde.org/qt/clang/llvm/-/commit/0220c07a94012b9dce9250addac6a8ee1f674b21

Git commit fd9416b1cead200af535021c561a573971408f1e by GitHub (on behalf of Fateme Hosseini) on 24/07/2026 at 16:58..
[Hexagon] Lower fcmp oeq to vcmp_(s|h)f_eq. (#211570)

Before this commit, the following error persisted in the hexagon
backend.

Consider the `file.ll` with the following contents.
```
define <32 x float> @setoeq_v32f32(<32 x float> %a, <32 x float> %b,
                                    <32 x float> %c, <32 x float> %d) {
  %cmp = fcmp oeq <32 x float> %a, %b
  %r   = select <32 x i1> %cmp, <32 x float> %c, <32 x float> %d
  ret <32 x float> %r
}
```

Compiling it as `hexagon-llc -march=hexagon
-mattr=+hvxv81,+hvx-length128b file.ll`, we get

```
setoeq_v32f32:
        .cfi_startproc
        {
                q0 = vcmp.eq(v0.w,v1.w)
        }
        {
                v0 = vmux(q0,v2,v3)
                jumpr r31
        }
.Lfunc_end0:
        .size   setoeq_v32f32, .Lfunc_end0-setoeq_v32f32
        .cfi_endproc
```

It must be noted that the resulting code is using a bitwise comparison
leading to incorrect quiet-NaN behavior. In this patch, we use
vcmp_sf_eq function for the equality check to correctly handle the NaN
comparison behavior.

For Pre-v81, we synthesize oeq(a,b) as NOT(ogt(a,b) OR ogt(b,a) OR
isNaN(a) OR isNaN(b)) using the available float-GT instructions.

Co-authored-by: Kaushik Kulkarni <[email protected]>
Co-authored-by: Sergei Larin <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/fd9416b1cead200af535021c561a573971408f1e

Git commit ca78391cea0b15a1cbb141dd8830a51fb7bee47a by GitHub (on behalf of Balázs Benics) on 24/07/2026 at 16:59..
Revert "[analyzer] Fix false positive in strchr/strrchr with constant args" (#211857)

Reverts llvm/llvm-project#210154

Broke some build bots.
https://github.com/llvm/llvm-project/pull/210154#issuecomment-5071830822
https://lab.llvm.org/buildbot/#/builders/144/builds/60200

```
# | error: 'expected-error' diagnostics seen but not expected: 
# |   File /home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/llvm-project/clang/test/Analysis/string-search-modeling.c Line 515: use of undeclared identifier 'u'
# |   File /home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/llvm-project/clang/test/Analysis/string-search-modeling.c Line 527: use of undeclared identifier 'u'
# |   File /home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/llvm-project/clang/test/Analysis/string-search-modeling.c Line 538: use of undeclared identifier 'U'
# |   File /home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/llvm-project/clang/test/Analysis/string-search-modeling.c Line 550: use of undeclared identifier 'u'
# |   File /home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/llvm-project/clang/test/Analysis/string-search-modeling.c Line 578: use of undeclared identifier 'u'
```
https://invent.kde.org/qt/clang/llvm/-/commit/ca78391cea0b15a1cbb141dd8830a51fb7bee47a

Git commit 03d3c7b0493d45d1a45768f88da9812cdf0ed758 by GitHub (on behalf of Alexis Engelke) on 24/07/2026 at 17:03..
[ADT] Skip initial empty string in StringTable iterator (#211808)

StringTable requires the first string to be empty, but this is never
useful for users that iterate over all strings in the table. Skip it by
default before drop_begin() on StringTable iteration scatters further
throughout the code base.
https://invent.kde.org/qt/clang/llvm/-/commit/03d3c7b0493d45d1a45768f88da9812cdf0ed758

Git commit a98d10f58baf3270f1cc611885eaef02214b7ffe by GitHub (on behalf of Aleksandr Popov) on 24/07/2026 at 17:05..
[LAA] Use dereferenceable assumption for dereferenceable_or_null pointers (#211820)

evaluatePtrAddRecAtMaxBTCWillNotWrap currently bails out when
getPointerDereferenceableBytes reports a size that requires the pointer
to be non-null (as with the dereferenceable_or_null attribute), even
when a stronger dereferenceable assumption is available for the same
pointer.

Reset DerefBytes to 0 in that case so we fall through to
getKnowledgeForValue and pick up any dereferenceable assumption. This
lets early-exit loops guarded by such an assumption vectorize.
https://invent.kde.org/qt/clang/llvm/-/commit/a98d10f58baf3270f1cc611885eaef02214b7ffe

Git commit 5337a2abb0b476d219cade1185b22890639ef9b8 by GitHub (on behalf of Jackson Stogel) on 24/07/2026 at 17:07..
[libc][memory_utils] Rename shadowed load/store to avoid ADL ambiguity (#211714)

When compiling `inline_memmove` with MSVC for non-x86 architectures, `op_generic.h` picks
a non-builtin type for generic_v128 and friends:
https://github.com/llvm/llvm-project/blob/cad3c95a89c48d714a71f6e8b4af6f3e3ab100ea/libc/src/string/memory_utils/op_generic.h#L54-L57

This causes calls to `load` and `store` to trigger ADL, which is
ambiguous with `load` definition in `memory_utils/utils.h`.

```
C:\Users\jtstogel\Github\llvm-project\libc\src/string/memory_utils/op_generic.h(348): error C2668: '__llvm_libc_24_0_0_git::generic::store': ambiguous call to overloaded function
C:\Users\jtstogel\Github\llvm-project\libc\src/string/memory_utils/op_generic.h(138): note: could be 'void __llvm_libc_24_0_0_git::generic::store<T>(__llvm_libc_24_0_0_git::Ptr,T)'
        with
        [
            T=__llvm_libc_24_0_0_git::inline_memmove_aarch64::uint512_t
        ]
C:\Users\jtstogel\Github\llvm-project\libc\src/string/memory_utils/utils.h(221): note: or       'void __llvm_libc_24_0_0_git::store<T>(__llvm_libc_24_0_0_git::Ptr,T)' [found using argument-dependent lookup]
        with
        [
            T=__llvm_libc_24_0_0_git::inline_memmove_aarch64::uint512_t
        ]
C:\Users\jtstogel\Github\llvm-project\libc\src/string/memory_utils/op_generic.h(348): note: while trying to match the argument list '(__llvm_libc_24_0_0_git::Ptr, const T)'
        with
        [
            T=__llvm_libc_24_0_0_git::inline_memmove_aarch64::uint512_t
        ]
```
https://invent.kde.org/qt/clang/llvm/-/commit/5337a2abb0b476d219cade1185b22890639ef9b8

Git commit 023b0a6a6d6d60d18b28a0457b09560f4eb1540d by jtstogel on 24/07/2026 at 17:08..
[libc][cpp::string] Allocate fewer temp strings in operator= and +=

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.

This PR assumes that self-assignment and self-appends are not supported with `cpp::string`, and adds debug asserts preventing them. Currently, assignment doesn't work. `cpp::string s = "abc"; s = s;` will just zero out the string. This PR is a slight regression in that `operator+=(const cpp::string&)` previously worked, but now it errors in debug mode, and would result in a use-after-free without the assert statement. I don't think self-append/self-assignment is something `cpp::string` needs to support, so I omitted it, but if a reviewer thinks this behavior is important happy to amend this PR.
https://invent.kde.org/qt/clang/llvm/-/commit/023b0a6a6d6d60d18b28a0457b09560f4eb1540d

Git commit 17199817803526bfd5c88f7476c581ddbe7bfdb2 by jtstogel on 24/07/2026 at 17:08..
Handling aliasing
https://invent.kde.org/qt/clang/llvm/-/commit/17199817803526bfd5c88f7476c581ddbe7bfdb2

Git commit 52ea1683e6898f71affa086ba69eade092f39d38 by jtstogel on 24/07/2026 at 17:08..
Remove now unused deps
https://invent.kde.org/qt/clang/llvm/-/commit/52ea1683e6898f71affa086ba69eade092f39d38

Git commit 754e93c72ec06172c754e857218e11d9b670babc by jtstogel on 24/07/2026 at 17:09..
Handle self-move-assignment
https://invent.kde.org/qt/clang/llvm/-/commit/754e93c72ec06172c754e857218e11d9b670babc
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.