[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/arsenm/libclc-hypot-half-fma'.
Changed from 0000000000000000000000000000000000000000 to 98aa28eea554ac1a297af1b3ee47fe4d1ce00638
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 f266ca172cf30187791f541b56af441c2bb26777 by GitHub (on behalf of Finn Plummer) on 22/07/2026 at 17:13..
[HLSL][Docs] Add metadata description of semantic signatures (#206804)
Adds docs of semantic signatures from the proposal.
Resolves https://github.com/llvm/llvm-project/issues/204877
https://invent.kde.org/qt/clang/llvm-project/-/commit/f266ca172cf30187791f541b56af441c2bb26777
Git commit dbaabbc920fcd60aeed5109c3c6353830e7605c5 by GitHub (on behalf of Hubert Tong) on 22/07/2026 at 17:17..
[libunwind][test][AIX] Add C API test for unwinding from AIX VAPI (as signal handler) (#209662)
Further to https://github.com/llvm/llvm-project/pull/209306, test a case
where a signal handler is a Virtual API function triggered synchronously
while the VAPI is not active. Resuming an ancestor context of the signal
frame should call the VAPI return glue.
---------
Assisted-by: IBM Bob
https://invent.kde.org/qt/clang/llvm-project/-/commit/dbaabbc920fcd60aeed5109c3c6353830e7605c5
Git commit 045c8987eceb67c80a0423fc62dce9acc75f6cb0 by GitHub (on behalf of Hristo Hristov) on 22/07/2026 at 17:27..
[libc++][NFC] Format and move `transform_view`'s `sentinel.pass.cpp` (#211252)
As a pre-requisite to: https://github.com/llvm/llvm-project/pull/193891
https://invent.kde.org/qt/clang/llvm-project/-/commit/045c8987eceb67c80a0423fc62dce9acc75f6cb0
Git commit 58d2ec68ca7752c10035bc3394bc18e8d678efd8 by GitHub (on behalf of Maksim Levental) on 22/07/2026 at 17:28..
[mlir-c] Add TypeConverter materialization; use a status enum for the type conversion callback (#208934)
Continues the buildout of the dialect-conversion C bindings (follows
#206146 and #206161).
- Exposes `TypeConverter::addSourceMaterialization` and
`addTargetMaterialization` through the MLIR C API.
- Introduces `MlirTypeConverterConversionStatus`
(`Success`/`Failure`/`Declined`) and switches
`MlirTypeConverterConversionCallback` to return it, replacing the old
`MlirLogicalResult` + `MlirType{NULL}` dual sentinel. The old convention
could not distinguish the C++ decline (`std::nullopt`, try the next
conversion) and hard-failure (`failure()`, stop) states; the enum maps
cleanly to all three. The Python binding and C API test are updated
accordingly.
Assisted by: Claude
https://invent.kde.org/qt/clang/llvm-project/-/commit/58d2ec68ca7752c10035bc3394bc18e8d678efd8
Git commit e19eb38d6f9eb78113c44783ed69e1ae6639783e by GitHub (on behalf of Matt Arsenault) on 22/07/2026 at 17:31..
RuntimeLibcalls: Drop artificial __aeabi_?cmpeq suffixes (#211251)
Avoid defining synthetic LibcallImpls just to match the use
case of the legalizer. __aeabi_?cmpeq returns a boolean for
ordered-equal and was defined twice with __oeq/__une enum
suffixes so the one symbol could serve both OEQ and UNE.
Replace each pair with a single unsuffixed impl providing only
OEQ. The legalizer can directly invert it without the dummy entry.
Co-authored-by: Claude (Opus 4.8) <[email protected]>
https://invent.kde.org/qt/clang/llvm-project/-/commit/e19eb38d6f9eb78113c44783ed69e1ae6639783e
Git commit 7f1aca578c26409aa831049611ef66ff344515cd by GitHub (on behalf of Harald van Dijk) on 22/07/2026 at 17:41..
[DebugInfo] Avoid duplicate DIGlobalVariableExpression during upgrade (#190616)
During bitcode upgrades, if an old DIGlobalVariable is encountered that
contained a DIExpression, a DIGlobalVariableExpression is created for
it. This could happen multiple times. As described in
https://reviews.llvm.org/D26769, it is valid for a DIGlobalVariable to
have multiple DIGlobalVariableExpressions, but the use case for this is
a location that cannot be represented in a single DIExpression, not a
redundant restatement of the same DIExpression.
https://invent.kde.org/qt/clang/llvm-project/-/commit/7f1aca578c26409aa831049611ef66ff344515cd
Git commit 9659d3a8aef9b610eaf496201a5fb9c904d701fa by GitHub (on behalf of Matsu) on 22/07/2026 at 17:45..
[mlir][OpenACC] Forward dynamic boxed reduction extents (#211318)
Example:
```fortran
subroutine reduce(a, x, n)
integer :: n, i
real :: a(:), x(:)
!$acc parallel loop reduction(+:a)
do i = 1, n
a(:) = a(:) + x(i)
end do
end subroutine
```
`ACCCGToGPU` represents each gang/thread-private array as a dynamically
offset `memref.subview`. Converting this subview directly to a FIR
pointer-like type loses the memref offset, causing different private
copies to alias the same storage.
Fix: extract the selected subview’s element offset, convert it to bytes,
and create a zero-offset view at that address before converting to the
FIR pointer-like type. This preserves the selected gang/thread-private
slice.
Before:
```mlir
%subview = memref.subview %view[%block_id, 0] [1, %extent] [1, 1]
: memref<?x?xf64> to memref<?xf64, strided<[1], offset: ?>>
%result = fir.convert %subview
: (memref<?xf64, strided<[1], offset: ?>>) ->
!fir.heap<!fir.array<?xf64>>
```
After:
```mlir
%subview = memref.subview %view[%block_id, 0] [1, %extent] [1, 1]
: memref<?x?xf64> to memref<?xf64, strided<[1], offset: ?>>
%base, %offset, %sizes, %strides =
memref.extract_strided_metadata %subview
: memref<?xf64, strided<[1], offset: ?>> ->
memref<f64>, index, index, index
%c8 = arith.constant 8 : index
%byte_offset = arith.muli %offset, %c8 : index
%private_view = memref.view %buffer[%byte_offset][%extent]
: memref<?xi8> to memref<?xf64>
%result = fir.convert %private_view
: (memref<?xf64>) -> !fir.heap<!fir.array<?xf64>>
```
https://invent.kde.org/qt/clang/llvm-project/-/commit/9659d3a8aef9b610eaf496201a5fb9c904d701fa
Git commit 30878c15a6116712db726bf4906620fd8ee571d4 by GitHub (on behalf of David Young) on 22/07/2026 at 17:47..
[bazel] Add os select for plugin process on Initialization target to add windows (#211276)
Another small piece of windows build support for LLDB in bazel.
Internally at Meta, our buck2 rule for this has a split for mac/linux
with PluginProcessPOSIX and windows with PluginProcessWindowsCommon. So
this should be a no-op for existing linux & mac builds while setting up
a bit more for windows.
I have no bazel build set up locally, so will wait on CI to confirm no
regression.
bazel rule creation assisted with claude
https://invent.kde.org/qt/clang/llvm-project/-/commit/30878c15a6116712db726bf4906620fd8ee571d4
Git commit 9b0e63af7c1026d7f4a1550753b7e1294af46d29 by GitHub (on behalf of adams381) on 22/07/2026 at 17:47..
[CIR] Rewire byref args to the incoming pointer (#210836)
The CallConvLowering body rewrite for Indirect arguments treats byval
and
byref the same way: it inserts a cir.load at function entry and reroutes
body
uses to the loaded value. For byref — a non-trivially-copyable type
passed by
pointer — that entry load is a byte-copy, so the callee works on a local
copy
instead of the caller's storage. That breaks types whose representation
embeds
self-referential pointers: libstdc++'s SSO std::string keeps _M_p
pointing at
its own _M_local_buf, and a byte-copy leaves the copy's _M_p aliasing
the
source's buffer.
This mirrors the sret return fix in insertSRetStores. For byref only,
rewire
the CIRGen param-slot alloca to the incoming pointer and drop the spill
store,
so the body operates on the caller's storage in place. byval keeps the
load-at-entry copy, which is correct there.
The rewrite is exercised through the classification-injection driver in
clang/test/CIR/Transforms/abi-lowering/indirect-byval.cir, covering a
byref
field access on the incoming pointer and a byval control case that
retains the
copy. The call site still copies a value operand into a fresh alloca
before
passing it by reference; forwarding existing storage in place is left
for a
follow-up.
https://invent.kde.org/qt/clang/llvm-project/-/commit/9b0e63af7c1026d7f4a1550753b7e1294af46d29
Git commit 54a0f730d9f8df4e7f5e4bfd4c03acbc182eb3cf by GitHub (on behalf of David Green) on 22/07/2026 at 18:13..
[AArch64] Reuse NeoverseN1 and N2 scheduling models for A76/A77/A78. (#211209)
We do not have native scheduling models for some of the Cortex-A
generations of CPUs, so they were still using the old Cortex-A57 model.
Whilst not perfectly accurate, the NeoverseN1 and NoeverseN2 scheduling
models should be a better fit for these CPUs. I mostly just tried to
make sure the number of pipelines matches between the neoverse core and
the cortex core. If we need something more accurate then we can start
adding new models for the CPUs.
https://invent.kde.org/qt/clang/llvm-project/-/commit/54a0f730d9f8df4e7f5e4bfd4c03acbc182eb3cf
Git commit 7d39826fbe9e1b248fcdb0bdd68626b3deb88d1e by GitHub (on behalf of Tom Stellard) on 22/07/2026 at 18:14..
workflows/release-documentation: Fix indentation (#211319)
Introduced by 8ad500f6f7d7347ca097d9c442fbf4a0f604dc26.
https://invent.kde.org/qt/clang/llvm-project/-/commit/7d39826fbe9e1b248fcdb0bdd68626b3deb88d1e
Git commit e00944c8d800c3ebc78d22a04ed7c3ce0bf162a1 by GitHub (on behalf of Andy Kaylor) on 22/07/2026 at 18:27..
[CIR] Generate cleanup region for loops when needed (#211158)
This adds support for generating a cleanup region in loops that declare
destructed variables in the loop condition. These variables need to be
destructed on a per-iteration basis, so it's not possible to have a
cleanup scope that properly encloses the variable without losing the
loop structure elements in the initial CIR representation.
The CFG flatteneing of these loops was added in a previous PR, and the
lowering to LLVM IR follows directly from the flattened form.
Assisted-by: Cursor / various models
https://invent.kde.org/qt/clang/llvm-project/-/commit/e00944c8d800c3ebc78d22a04ed7c3ce0bf162a1
Git commit 0e9b8c3dfa73fc3d5d0a87241b4d979f9115cf38 by GitHub (on behalf of Deric C.) on 22/07/2026 at 18:34..
[HLSL] Add IsMultiSampled HLSL resource attribute (#211125)
This PR completes the frontend work for adding the IsMultiSampled HLSL
resource attribute (addressing
https://github.com/llvm/llvm-project/issues/194933)
The DirectX and SPIR-V backend work will be completed alongside the
implementation Texture2DMS
(https://github.com/llvm/llvm-project/issues/194955) so that the
functionality can be exercised.
Assisted by: Claude Opus 4.8
https://invent.kde.org/qt/clang/llvm-project/-/commit/0e9b8c3dfa73fc3d5d0a87241b4d979f9115cf38
Git commit e1af868257eb4a49db9149cc239ca9b9338d6419 by GitHub (on behalf of jimingham) on 22/07/2026 at 18:37..
Revert "Make result variables obey their dynamic values in subsequent expressions" (#211321)
This reverts commit 8b9cce358bef26ae4cb9275dd6a43f903bafbaa0.
This causes failures running expressions that return ObjC types on
x86-64 macOS but not on arm64 macOS.
Reverting till I can figure out why that's happening.
https://invent.kde.org/qt/clang/llvm-project/-/commit/e1af868257eb4a49db9149cc239ca9b9338d6419
Git commit 50563d22356cd68f5d134027ff594308d273f4be by GitHub (on behalf of Alexis Perry-Holby) on 22/07/2026 at 18:42..
[flang] Add Flang Call Notes for 7/15/26 meeting (#211284)
https://invent.kde.org/qt/clang/llvm-project/-/commit/50563d22356cd68f5d134027ff594308d273f4be
Git commit 4e833e21cce5966ff9617f048ad40226ed60ca70 by GitHub (on behalf of lntue) on 22/07/2026 at 18:44..
[libc] Add missing functions in FEnvImpl.h under LIBC_MATH_USE_SYSTEM_FENV config. (#211303)
https://invent.kde.org/qt/clang/llvm-project/-/commit/4e833e21cce5966ff9617f048ad40226ed60ca70
Git commit 8c556564a2199e13f59dc43bfa5ef4345a89ae3b by GitHub (on behalf of Florian Hahn) on 22/07/2026 at 18:45..
[Matrix] Use incoming terminator as insert point in visitPHI. (#211211)
For some instructions, like invoke, getInsertionPointAfterDef may return
an std::nullopt. Using the insert point after the phi is then incorrect.
Use the incoming terminator as default insert point to fix a crash in
the added test cases.
PR: https://github.com/llvm/llvm-project/pull/211211
https://invent.kde.org/qt/clang/llvm-project/-/commit/8c556564a2199e13f59dc43bfa5ef4345a89ae3b
Git commit 8ae7803bede98cca73e6fd6a8fabbf95da9d0b46 by GitHub (on behalf of Jianjian Guan) on 22/07/2026 at 18:52..
[mlir][emitc] Add compound assignment ops (#210233)
https://invent.kde.org/qt/clang/llvm-project/-/commit/8ae7803bede98cca73e6fd6a8fabbf95da9d0b46
Git commit b47174d1d1adca974494d12ba54bd793075c930a by GitHub (on behalf of Florian Hahn) on 22/07/2026 at 18:53..
[VPlan] Add createWiden{Load,Store} VPBuilder members (NFC) (#210543)
Add member functions to create wide load/store and migrate various sites
to use them.
It also updates makeMemOpWideningDecisions to use it. For consistency,
ReplaceWith has been updated to always require inserted recipes.
PR: https://github.com/llvm/llvm-project/pull/210543
https://invent.kde.org/qt/clang/llvm-project/-/commit/b47174d1d1adca974494d12ba54bd793075c930a
Git commit 6f2ba122cbd047c77ec6ab26598523c7aa4ef853 by GitHub (on behalf of Jonas Devlieghere) on 22/07/2026 at 18:56..
[lldb] Synthesize data symbols for plain C globals on WebAssembly (#211301)
The Wasm name section names functions but not data, so LLDB recovers
data symbols from the DWARF. It only did so for variables with a linkage
name, such as a C++ vtable, so a plain C global, which has only a
DW_AT_name, got no symbol and its address did not resolve back to a
name. Use the source name when there is no linkage name.
https://invent.kde.org/qt/clang/llvm-project/-/commit/6f2ba122cbd047c77ec6ab26598523c7aa4ef853
Git commit 543160345be41f399c142f51355408362988f44e by GitHub (on behalf of Arthur Eubanks) on 22/07/2026 at 18:59..
Revert "[SimplifyCFG] Simplify switch default branch when branch proves operand value" (#211341)
Reverts llvm/llvm-project#206597
Causes verifier issues:
https://github.com/llvm/llvm-project/pull/206597#issuecomment-5049789740
https://invent.kde.org/qt/clang/llvm-project/-/commit/543160345be41f399c142f51355408362988f44e
Git commit 255d0013789d75187179264e8b026b04fd109bc3 by GitHub (on behalf of Spencer Bryngelson) on 22/07/2026 at 19:25..
[flang][OpenMP] Don't emit implicit default mapper for flat allocatable derived types (#209645)
An allocatable or pointer capture of a derived type in a `target` region
triggers
synthesis of an implicit default declare mapper for the type. The gate
keyed only on
whether the captured *variable* was allocatable, not on whether the
*type* needs a
mapper:
```cpp
if (!isPointer && (hasDefaultMapper || isAllocatable)) {
```
For a flat type -- all components trivially mappable, no
allocatable/pointer/nested
record members -- the mapper is unnecessary. The object maps as a plain
bulk copy.
Emitting a mapper anyway lowers to a per-element, per-component mapper
walk in the
offload runtime (`targetDataBegin` -> `targetDataMapper` ->
`targetDataBegin`, and the
mirror walk in `targetDataEnd`), which is `O(num_elements *
num_components)` per kernel
invocation. On a large device-resident allocatable array this busy-loops
the host for
minutes with the GPU idle.
`Fortran::lower::omp::requiresImplicitDefaultDeclareMapper()` already
answers whether a
type requires a mapper (allocatable/pointer/nested-record components, or
ISO-C interop),
but the allocatable-capture path never consulted it. This gates on it:
```cpp
if (!isPointer &&
(hasDefaultMapper ||
(isAllocatable && requiresImplicitDefaultDeclareMapper(*typeSpec)))) {
```
Pointer captures and user/pre-existing declare mappers are unaffected. A
flat allocatable
now maps as descriptor + base-address + attach entries with no
`mapper()` attribute --
identical to the pointer path.
### Reproducing the runtime cost
Reported against the AMD ROCm flang runtime as ROCm/llvm-project#3385. A
flat derived type
(`ghost_point`-like) in a device-resident allocatable array, mapped
implicitly across many
kernel invocations, hangs for minutes. `perf` on the hang shows all time
in per-component
work: `DenseMap` insert into the mapping-state tables, `targetDataEnd`'s
mirror walk, and
`SourceInfo` construction -- each `O(1)`/`O(log M)` per entry, so the
total is linear in
`M = num_elements * num_components * kernel_invocations` with a large
constant. Suppressing
the mapper collapses `M` to one bulk entry.
### Tests
- `implicit-map-flat-allocatable-no-mapper.f90`: new; a flat allocatable
capture emits no
mapper.
- `implicit-map-pointer-no-default-mapper.f90`: the type now has an
allocatable component
so it still requires a mapper (keeps the pointer-vs-allocatable
distinction meaningful).
- `derived-type-map.f90`, `defaultmap.f90`: updated; these asserted a
mapper for a flat
allocatable capture, which is the behavior being removed.
### AI tool usage
Per the [LLVM AI Tool Use
Policy](https://llvm.org/docs/AIToolPolicy.html): this change was
developed with substantial assistance from Claude (Opus 4.8) and
reviewed by the author. The
root-cause analysis, the patch, the tests, and this description were
AI-assisted; the reproducer
and the offload-runtime `gdb`/`perf` profiling on an AMD Instinct MI250X
(HPC Fund) that confirmed
the runtime cost is linear (not a runtime bug) were part of that
workflow. Also noted as an
`Assisted-by:` trailer in the commit.
https://invent.kde.org/qt/clang/llvm-project/-/commit/255d0013789d75187179264e8b026b04fd109bc3
Git commit a9a25dfa49e1c8c1e16d36872fa55e0f1a37718b by GitHub (on behalf of Nikhil Kotikalapudi) on 22/07/2026 at 19:34..
[CodeGen] Add MachineRegisterClassInfo analysis pass (#210826)
Which is a wrapper of RegisterClassInfo.
This can cache the result of RegisterClassInfo and hence
we can reduce compile time.
Supercedes https://github.com/llvm/llvm-project/pull/120690,
https://github.com/llvm/llvm-project/pull/164877
---------
Co-authored-by: Wang Pengcheng <[email protected]>
Co-authored-by: Patrick Simmons <[email protected]>
Co-authored-by: Matt Arsenault <[email protected]>
https://invent.kde.org/qt/clang/llvm-project/-/commit/a9a25dfa49e1c8c1e16d36872fa55e0f1a37718b
Git commit be34b478bf3b82ac3b447b17e2b7e73447c9c8dd by GitHub (on behalf of Alexey Bataev) on 22/07/2026 at 19:35..
[mlir][math] Fold FPowIOp with square-and-multiply to match powi expansion (#210982)
Fold math.fpowi using the base's own floating-point semantics via
iterative
square-and-multiply, matching the multiply sequence ExpandPowI builds in
SelectionDAGBuilder. The prior pow/powf-based fold computed in
float/double
and rounded differently from the runtime expansion, disagreeing with
x**n by ~1 ULP.
https://invent.kde.org/qt/clang/llvm-project/-/commit/be34b478bf3b82ac3b447b17e2b7e73447c9c8dd
Git commit 98aa28eea554ac1a297af1b3ee47fe4d1ce00638 by Matt Arsenault on 22/07/2026 at 19:53..
libclc: Use fma and simplify inf handling in half hypot
The inf handling should naturally fall through this sequence without
the explicit check.
https://invent.kde.org/qt/clang/llvm-project/-/commit/98aa28eea554ac1a297af1b3ee47fe4d1ce00638