[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/rnk/clang-format-md-write'.
Changed from 0000000000000000000000000000000000000000 to da04ce10261bd1fa9f963e4b3e865c8c0d237b35
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 3e6d5937389ff34243b58b70af0282c6c9174021 by GitHub (on behalf of Tshaka Lekholoane) on 22/07/2026 at 19:38..
[Clang] Add C++11/C23-style spellings for Swift import attributes (#183484)
Swift interop attributes such as `swift_name`, `swift_attr`, and
`swift_private` previously only supported GNU-style spelling. Add the
missing `[[]]` attribute spellings for C++11 and C23 compatibility,
bringing them in line with other Clang attributes.
https://invent.kde.org/qt/clang/llvm-project/-/commit/3e6d5937389ff34243b58b70af0282c6c9174021
Git commit 7e9782bad19c1995d350415f5e68c6d68330f69f by GitHub (on behalf of Deric C.) on 22/07/2026 at 19:46..
[HLSL] Move sema tests out of ParserHLSL into SemaHLSL/Attributes (#211353)
This PR moves sema tests that were misplaced in `clang/test/ParserHLSL`
into a more appropriate location: `clang/test/SemaHLSL/Attributes`
These tests exercise `[[hlsl::...]]` attribute (resource_class,
contained_type, is_array, is_ms, is_rov, raw_buffer, dimension)
diagnostics from `DiagnosticSemaKinds.td`, relating to:
- 'hlsl::X' attribute cannot be applied to a declaration
- attribute takes one argument / takes no arguments
- can be used only on HLSL intangible type '__hlsl_resource_t'
- attribute is already applied / applied with different arguments
- ResourceClass attribute argument not supported
Which are appropriately related to semantics rather than parsing.
https://invent.kde.org/qt/clang/llvm-project/-/commit/7e9782bad19c1995d350415f5e68c6d68330f69f
Git commit 3140a6478c782dcf9e26dbaedb7dd684be571bdf by GitHub (on behalf of Yonah Goldberg) on 22/07/2026 at 19:57..
[IR] Allow vector atomicrmw xchg (#208510)
Previously, we only allowed vector `atomicrmw xchg` for `elementwise`
`atomicrmw`. Relax this restriction. By default, expand these by casting
to integer.
This is a follow-up on: https://github.com/llvm/llvm-project/pull/190716
Assisted by AI.
https://invent.kde.org/qt/clang/llvm-project/-/commit/3140a6478c782dcf9e26dbaedb7dd684be571bdf
Git commit c8b363e4cdc31be8fd842f60430d66827af6ab15 by GitHub (on behalf of Razvan Lupusoru) on 22/07/2026 at 19:58..
[flang][acc] Reject generic interface name in acc routine (#211269)
OpenACC ties the named argument of a ROUTINE directive to a subroutine
or function. A generic interface name is therefore not a valid target.
Thus adding an explicit check for this plus informational error message.
https://invent.kde.org/qt/clang/llvm-project/-/commit/c8b363e4cdc31be8fd842f60430d66827af6ab15
Git commit 5b614d16bff2d78854f9f2683a84eec51ce2dcb4 by GitHub (on behalf of PiJoules) on 22/07/2026 at 19:59..
[asan] Add !dbg metadata to __asan_after/before_dynamic_init calls (#211086)
We get this error when linking the kernel with a custom asan runtime
```
= note: inlinable function call in a function with debug info must have a !dbg location
call void @__asan_after_dynamic_init()
```
The verifier throws this because __asan_after_dynamic_init doesn't have
!dbg but it is inlinable into the module ctor that invokes it which does
have !dbg. Normally, these functions aren't inlinable because they're
provided by some prebuilt library, but for Fuchsia's kernel, we provide
a custom runtime defining these and it's built with LTO which does make
it inlinable.
The fix in this patch is just adding the !dbg metadata to these calls
which I think should be non-intrusive.
NOTE: Gemini was used to make the test.
https://invent.kde.org/qt/clang/llvm-project/-/commit/5b614d16bff2d78854f9f2683a84eec51ce2dcb4
Git commit c85d1c54c5fba6344b117e369328a4b9b5a1386b by GitHub (on behalf of Ryan Buchner) on 22/07/2026 at 20:02..
[CodeGen] Ensure `undef` propagation when an undef copy is eliminated if used as a subregister def (#204039)
If we eliminate an `undef` copy and there is a use of the copy that
`isDef` on just a sub-register, mark it as `undef`.
Fixes #204036.
https://invent.kde.org/qt/clang/llvm-project/-/commit/c85d1c54c5fba6344b117e369328a4b9b5a1386b
Git commit dc698fa68ce1bd513cefa69cc21b113e754b8173 by GitHub (on behalf of Valentin Clement (バレンタイン クレメン)) on 22/07/2026 at 20:13..
[flang][cuda] Break circular global init when copying them to the GPU module (#211100)
PTX does not support cycle in globals.
```
error: Circular dependency found in global variable set
```
To avoid cycle in type descriptor, check if there is a cycle and break
it.
The algorithm uses Tarjan’s strongly connected components algorithm for
finding strongly connected components in a directed graph.
- Each fir.global is a graph node.
- Each fir.address_of in a global initializer is an edge to another
global.
- An SCC containing multiple globals—or a self-edge—represents a
circular initializer dependency.
https://invent.kde.org/qt/clang/llvm-project/-/commit/dc698fa68ce1bd513cefa69cc21b113e754b8173
Git commit fd5af7efad7ff39a14d49702de4377117e741f51 by GitHub (on behalf of Anutosh Bhat) on 22/07/2026 at 20:22..
[MLIR][Python] Avoid printing an unset nanobind include directory (#211240)
`nanobind_INCLUDE_DIR` is only populated when MLIR discovers nanobind
through the Python package. When `nanobind_DIR` is supplied explicitly,
the variable remains unset and the configuration output contains an
empty path:
```
Found nanobind v2.13.0:
```
The nanobind CMake package location is already reported by both
discovery paths.
We can only print the detected nanobind version in the final status
message. Or maybe if we want we can find the include dir for the
explicit path too and merge them to `nanobind_INCLUDE_DIR` but I think
this is better.
https://invent.kde.org/qt/clang/llvm-project/-/commit/fd5af7efad7ff39a14d49702de4377117e741f51
Git commit 410dad05ab02a246112d5cb03d27ed87a5e9e607 by GitHub (on behalf of Aiden Grossman) on 22/07/2026 at 20:23..
[BranchFolding] Refactor AreConditionalsEqual to Helper (#211270)
As suggested in
https://github.com/llvm/llvm-project/pull/203110#discussion_r3628548201.
https://invent.kde.org/qt/clang/llvm-project/-/commit/410dad05ab02a246112d5cb03d27ed87a5e9e607
Git commit d33e8d81ac5ccb5164fe11cd38885ca5cfbaed91 by GitHub (on behalf of Alexey Bataev) on 22/07/2026 at 20:23..
[SLP][NFC]Add a test with non-profitable wide vectorization, NFC
Reviewers:
Pull Request: https://github.com/llvm/llvm-project/pull/211367
https://invent.kde.org/qt/clang/llvm-project/-/commit/d33e8d81ac5ccb5164fe11cd38885ca5cfbaed91
Git commit 3093d8c577d71a98ec4d9a2bdf26b196cc7a0f8d by GitHub (on behalf of Paulius Velesko) on 22/07/2026 at 20:44..
[HIPSPV] Preserve device debug info requested via -g
HIPSPVToolChain::adjustDebugInfoKind() unconditionally forced NoDebugInfo,
so compiling HIP device code with -g produced SPIR-V with no debug metadata.
Debuggers such as Intel's gdb-oneapi could therefore not resolve source
lines or local variables in offloaded kernels. The stated reason for
disabling it (the SPIRV-LLVM-Translator aborting on DW_OP_LLVM_convert) no
longer applies, as the translator now lowers that operation.
Stop clobbering the requested debug level, and when -g is given emit debug
info in the NonSemantic.Shader.DebugInfo form
(--spirv-debug-info-version=nonsemantic-shader-200), enabling the required
SPV_KHR_non_semantic_info extension. The default (no -g) output is
unchanged.
Also enable SPV_INTEL_optnone when -g is requested. At -O0 Clang marks
functions optnone; preserving that attribute lets gdb-oneapi inspect kernel
arguments and locals instead of reporting them as <optimized out>. The
extension is a no-op at -O1 and above.
Reported downstream: CHIP-SPV/chipStar#1004
https://invent.kde.org/qt/clang/llvm-project/-/commit/3093d8c577d71a98ec4d9a2bdf26b196cc7a0f8d
Git commit 252f31a6893b6a3dcb8b2a404e13933e376bf36b by GitHub (on behalf of Benedek Kaibas) on 22/07/2026 at 20:48..
[analyzer] Detect dangling pointers passed to function calls (#211045)
In order to detect if a dangling pointer is passed to a function the
analyzer has to inspect each call argument. For that reason I have
implemented the `checkPostCall` for the `DanglingPtrDeref` checker to
check if an argument passed to a function is dangling. Since
`checkLocation` only catches dereferences and cannot reason about
whether an argument passed to a function is dangling it cannot detect
these type of bugs alone.
https://invent.kde.org/qt/clang/llvm-project/-/commit/252f31a6893b6a3dcb8b2a404e13933e376bf36b
Git commit f1483ea484bafdf5e7ec6f17e94f7200256aa0e5 by GitHub (on behalf of Florian Hahn) on 22/07/2026 at 20:52..
[PhaseOrdering] Add more tests for expanding ptr SCEVs (NFC) (#211360)
Add more test cases requiring pointer-based SCEVs for
https://github.com/llvm/llvm-project/pull/180244.
https://invent.kde.org/qt/clang/llvm-project/-/commit/f1483ea484bafdf5e7ec6f17e94f7200256aa0e5
Git commit b4a12eb394f195d9f98a20727638a1cb52ce6727 by GitHub (on behalf of adams381) on 22/07/2026 at 21:06..
[CIR] Add opt-in flag to run x86_64 call-conv lowering (#211335)
The x86_64 System V classifier and the CallConvLowering pass that drives
it are already in the tree, but nothing runs them: the -fclangir
pipeline never adds the pass, so CIR still emits uncoerced aggregate
signatures on x86_64 and its LLVM output diverges from classic CodeGen
for anything passed or returned in registers.
This adds the cc1 flag -clangir-enable-call-conv-lowering, off by
default like -clangir-enable-idiom-recognizer, and runs the pass in
runCIRToCIRPasses right after CXXABILowering, which has already reduced
C++ ABI types to plain records the classifier can handle. The flag is
gated on x86_64. On other targets it is a silent no-op, so a driver can
set it unconditionally without breaking non-x86_64 builds. The AVX level
is fixed at None because the classifier's current supported subset has
no >128-bit vector aggregate where the level would change the result.
With the flag on, supported scalars and small aggregates are coerced to
match classic CodeGen: sign/zero-extended narrow integers, SSE scalars,
one- and two-eightbyte INTEGER/SSE struct coercion, ignored empty
structs, sret returns, and byval arguments. Types the classifier does
not yet handle — unions, long double, and float aggregates that classify
to an SSE vector — still errorNYI when the flag is on. CIR does emit
noalias on byval parameters where classic CodeGen does not, which the
test documents with split prefixes.
https://invent.kde.org/qt/clang/llvm-project/-/commit/b4a12eb394f195d9f98a20727638a1cb52ce6727
Git commit 8eb0419275536508701246b7e7c47efb5a4fbe1f by GitHub (on behalf of Farzon Lotfi) on 22/07/2026 at 21:07..
[SPIRV] Support switch terminators when merging region exits (#209859)
fixes #209310
This change fixes the `llvm_unreachable("Unhandled terminator type.")`
crash in `createExitVariable` when a convergence region's exit block
ends in a switch instruction.
To handle the SwitchInst properly we needed to:
1. Build a select chain keyed on the switch condition, using the default
destination as the fallback value and skipping successors that are
internal to the region. This is an almost exact copy of what already
exists for `CondBrInst`.
2. Modify the SPIRVStructurizer.cpp `splitSwitchCases`to removes a case
whose target is the default destination instead of splitting it into a
new successor block.
Assisted by Claude Opus 4.8
https://invent.kde.org/qt/clang/llvm-project/-/commit/8eb0419275536508701246b7e7c47efb5a4fbe1f
Git commit 2bc3ca68d169e7c67db6ad5f364e1488f0c2abeb by GitHub (on behalf of David Young) on 22/07/2026 at 21:16..
[bazel] Set up windows specific cmake defines for lldb bazel build and config for LZMA (#205823)
Adds an @platforms//os:windows branch to the ConfigHeader
expand_template OS select(), alongside the
existing macos/linux branches. On Windows the POSIX-oriented features
are disabled (HAVE_PTSNAME_R,
LLDB_ENABLE_POSIX, LLDB_ENABLE_TERMIOS → 0) and the platform-detection
macros (HAVE_LIBCOMPRESSION,
HAVE_*_PROCESS_VM_READV, HAVE_PPOLL, HAVE_SYS_EVENT_H,
LLDB_ENABLE_LIBXML2, LLDB_HAVE_EL_RFUNC_T) are
set to their Windows values. This complements the recently added Windows
process plugin (#203146) so a
Windows-configured lldb gets a correct Config.h. Python stays disabled
on Windows (base default
LLDB_ENABLE_PYTHON 0).
Continuing to work backwards from Meta's internally working buck2 build
that is translated from this bazel. This lacked windows select entirely,
so porting back what we ended up needing. There are still some changes
needed on the build targets, but leave those to a follow up diff as I
would hope build signals should be clean with this?
https://github.com/llvm/llvm-project/pull/201173 originally started full
windows support and there were more changes to get it working on a
remote build in
https://github.com/hermeticbuild/hermetic-llvm/pull/582/changes#diff-da3f010352329507a9e1e3f1dc911ae4ba69ba9747ce15e5eb76fbefe5f829b3.
If we look at
3rd_party/llvm-project/22.x/patches/lldb-windows-config-header.patch in
the previous patch, it lines up with what we have here.
Meta does package LZMA support into our windows build, so switching to a
config to control that.
https://invent.kde.org/qt/clang/llvm-project/-/commit/2bc3ca68d169e7c67db6ad5f364e1488f0c2abeb
Git commit 9b4b8773a15c90ffdcb5826f886495c106a12211 by GitHub (on behalf of Alexey Bataev) on 22/07/2026 at 21:22..
[SLP][AArch64]Support masked div/rem on non-pow-2 vectors
For fixed-width integer div/rem on AArch64 SVE, a non-power-of-2 vector
cannot execute as a single whole-register operation. When profitable,
pad the vector to the next full register and use the masked div/rem
intrinsics.
Fixes #207880
Reviewers: RKSimon, hiraditya
Pull Request: https://github.com/llvm/llvm-project/pull/210623
https://invent.kde.org/qt/clang/llvm-project/-/commit/9b4b8773a15c90ffdcb5826f886495c106a12211
Git commit f2a284b4732b2b568315d5b8f2e36a96eed23f8a by GitHub (on behalf of Tom Stellard) on 22/07/2026 at 21:29..
workflows/release-sources: Add missing checkout for composite action (#211079)
We need to explicitly checkout
.github/workflows/validate-release-version if we are going to use it.
https://invent.kde.org/qt/clang/llvm-project/-/commit/f2a284b4732b2b568315d5b8f2e36a96eed23f8a
Git commit 2662e2e3ff1d7912bdcd02c3733b6c7c8e2b6a97 by GitHub (on behalf of Reid Kleckner) on 22/07/2026 at 21:34..
[clang-tidy][docs] Rename short check docs to Markdown (#210466)
Tracking issue: #201242
See the [migration guide] for more information.
[migration guide]:
https://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines
This is the initial straight rename commit. It will probably break the
docs build, but it has to be a separate PR for blame preservation
purposes.
https://invent.kde.org/qt/clang/llvm-project/-/commit/2662e2e3ff1d7912bdcd02c3733b6c7c8e2b6a97
Git commit 30d892e8159b4103f0f171439c05479cbc50d917 by GitHub (on behalf of Reid Kleckner) on 22/07/2026 at 21:37..
[clang-tidy][docs] Rewrite short check docs to Markdown (#210467)
Tracking issue: #201242
See the [migration guide] for more information.
[migration guide]:
https://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines
This is a stacked PR based on #210466 , which will be a standalone
commit that
renames *.rst -> *.md before this PR lands for history preservation
purposes.
I chose to do 211 files at once in this large batch because they were
all short, i.e. less than 30 lines, so they all have very uncomplicated
reST, which doesn't require much review, or fancy rewriting.
This was prepared with rst2myst plus LLM-assisted cleanup, and the
changes are broken into two commits, mechanical, and LLM cleanup.
https://invent.kde.org/qt/clang/llvm-project/-/commit/30d892e8159b4103f0f171439c05479cbc50d917
Git commit d7544537bce1e3247b563b75206733752f10338b by GitHub (on behalf of Reid Kleckner) on 22/07/2026 at 21:39..
[clang][docs] Fix markdown migration defects in the user manual (#210785)
First, replace all the `{eval-rst}` blocks for option documentation with
`:::{option}` fences. This means authors won't have to bounce between
markup languages within one file, and removes more semantic indentation,
which has been a recurring problem.
Second, remove blockquotes that seem unintentional. None of these are
real quotes, and they seem like artifacts of unintended indentation
before the Markdown migration (#208310).
---------
Co-authored-by: Andy Kaylor <[email protected]>
https://invent.kde.org/qt/clang/llvm-project/-/commit/d7544537bce1e3247b563b75206733752f10338b
Git commit a8228369cae4a84150d19f4193206249b76187a0 by GitHub (on behalf of Amir Ayupov) on 22/07/2026 at 21:44..
[BOLT][docs] New backend guide (#211382)
Add a brief doc with BOLT-specific guidance for adding a new backend.
https://invent.kde.org/qt/clang/llvm-project/-/commit/a8228369cae4a84150d19f4193206249b76187a0
Git commit 5f88e49e8c24c5b799872b4331d35b5406d3c213 by GitHub (on behalf of Usama Hameed) on 22/07/2026 at 21:54..
[MemDep] Treat partial-overlap lifetime.start as a clobber (#211167)
When getSimplePointerDependencyFrom scans backward and reaches a
@llvm.lifetime.start, it only treated the marker as a barrier when the
query location MustAliased the lifetime's argument, and otherwise fell
through to `continue`. For a load through a GEP into part of an alloca
the alias result is PartialAlias, so the scan walked past lifetime.start
as if it weren't there, and GVN Load PRE would hoist the load above it.
Inspect the full alias result instead of just isMustAlias: MustAlias
still returns Def and NoAlias still continues, but any partial/may
overlap now returns a Clobber so lifetime.start acts as a barrier and
the access cannot be moved above it.
Fixes #194940
https://invent.kde.org/qt/clang/llvm-project/-/commit/5f88e49e8c24c5b799872b4331d35b5406d3c213
Git commit 11542f5bf4aedcc15bf37a02a3cb44f187ce588c by GitHub (on behalf of Dave Lee) on 22/07/2026 at 21:55..
[lldb][test] Reinforce formatter bytecode unit tests (#211042)
rdar://176903081
Assisted-by: claude
https://invent.kde.org/qt/clang/llvm-project/-/commit/11542f5bf4aedcc15bf37a02a3cb44f187ce588c
Git commit 1ba2d936971c52b5fd8741fc980c7c11c7522597 by GitHub (on behalf of Maksim Levental) on 22/07/2026 at 22:02..
[mlir-c] Fix pattern-set leak in rewrite.c materialization tests (#211358)
The `TypeConverter` materialization tests added in #208934 (`testTypeConverterSourceMaterialization` / `testTypeConverterTargetMaterialization`) freeze their `MlirRewritePatternSet` but never destroy it.
This was caught by LeakSanitizer on the aarch64 HWASan bootstrap bot ([builder 55, build
30763](https://lab.llvm.org/buildbot/#/builders/55/builds/30763)):
Fix: call `mlirRewritePatternSetDestroy(patterns)` after freezing in both tests, matching existing usage.
Assisted by: Claude
https://invent.kde.org/qt/clang/llvm-project/-/commit/1ba2d936971c52b5fd8741fc980c7c11c7522597
Git commit 46a493beaafa82219d796b4150662257af232a5b by GitHub (on behalf of Teresa Johnson) on 22/07/2026 at 22:03..
[MemProf] Fix memprof metadata propagation issue (#211373)
Fixes a few places where optimizations were dropping memprof related
metadata when creating new calls. Adds a new facility that can be used
to propagate profile and debug metadata, and employs that in the passes
that were manually specifying just MD_prof and MD_dbg.
https://invent.kde.org/qt/clang/llvm-project/-/commit/46a493beaafa82219d796b4150662257af232a5b
Git commit 37879dc3049378443c156db0f5e01e97c859b5bf by GitHub (on behalf of Matsu) on 22/07/2026 at 22:04..
[mlir][OpenACC] Preserve worker rows when combining reductions (#210804)
Example:
```fortran
!$acc parallel loop gang worker reduction(+:sum)
do j = 1, n
!$acc loop vector reduction(+:sum)
do i = 1, n
sum = sum + a(i, j)
end do
end do
```
In this code, each worker has a private partial result, but combine
predication previously allowed only ThreadY row zero to contribute.
Fix: keep ThreadY active only for proven atomic worker combines, while
preserving legacy predication or reporting NYI for unsafe combinations.
https://invent.kde.org/qt/clang/llvm-project/-/commit/37879dc3049378443c156db0f5e01e97c859b5bf
Git commit 18f428025c06aeaf18d8e49259cad700994962f0 by Reid Kleckner on 22/07/2026 at 22:13..
[docs][clang-format] Rename docs to Markdown
Rename ClangFormat and ClangFormatStyleOptions from reStructuredText to Markdown.
Update the clang-format documentation generator scripts and CMake custom targets to point at the renamed .md files so the generated documentation paths remain valid. Keep this changeset limited to rename/path updates; Markdown content cleanup is in the follow-up rewrite changeset.
https://invent.kde.org/qt/clang/llvm-project/-/commit/18f428025c06aeaf18d8e49259cad700994962f0
Git commit da04ce10261bd1fa9f963e4b3e865c8c0d237b35 by Reid Kleckner on 22/07/2026 at 22:56..
[docs][clang-format] Migrate generated clang-format docs to markdown
The challenge here is that the documentation is generated from Doxygen
comments in headers, `Format.h` and `IncludeStyle.h`.
First, the generator was updated to generate markdown constructs, and
then the Doxygen comments were also modified to use markdown constructs.
Mostly this means using single backticks instead of double backticks,
which is the Doxygen-native way of expressing code font blocks anyway,
so that's good.
To validate, I built the Sphinx docs and the doxygen, and I confirmed
that the generator script is idempotent, meaning it doesn't change the
markdown output. When I add a new option to clang-format, it shows up in
the help text block, so it works.
Before/after validation links:
| Source file | Before HTML | After HTML |
| --- | --- | --- |
| `clang/docs/ClangFormat.md` | [before](https://clang.llvm.org/docs/ClangFormat.html) | [after](https://llvmdocs.staging.reidkleckner.dev/clang/docs/ClangFormat.html) |
| `clang/docs/ClangFormatStyleOptions.md` | [before](https://clang.llvm.org/docs/ClangFormatStyleOptions.html) | [after](https://llvmdocs.staging.reidkleckner.dev/clang/docs/ClangFormatStyleOptions.html) |
Assisted-by: an agent
https://invent.kde.org/qt/clang/llvm-project/-/commit/da04ce10261bd1fa9f963e4b3e865c8c0d237b35