[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/clang/driver-amdgpu-avoid-redundant-target-cpu'.
Changed from cef2ec3eecdd7b2683d185d4d4bfdd91ece675c2 to b66692df9952f00e2410046917678fd2e8fff1d3
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 13706f1c73b91f74a8a555748b68362fbb5d698f by GitHub (on behalf of Matt Arsenault) on 27/07/2026 at 05:46..
AMDGPU: Migrate misc. tests to subarch triples (#211585)
https://invent.kde.org/qt/clang/llvm-project/-/commit/13706f1c73b91f74a8a555748b68362fbb5d698f
Git commit 5271fd9e65fb235fedd484cfc3710679744bdf46 by GitHub (on behalf of Lang Hames) on 27/07/2026 at 06:17..
[orc-rt] Session::HandlerTag -> orc_rt_ControllerHandlerTag (#212173)
Replace the `Session::HandlerTag = void*` type alias with
orc_rt_ControllerHandlerTag. The intent is both to make this type
accessible to the C API, and to rename it to clarify its role as a tag
for handlers in the controller that are callable by the executor.
https://invent.kde.org/qt/clang/llvm-project/-/commit/5271fd9e65fb235fedd484cfc3710679744bdf46
Git commit 820b5cb6d9fe8feda01fbb8b86d68aea10c63130 by GitHub (on behalf of Cullen Rhodes) on 27/07/2026 at 06:37..
[AArch64] Mark ZT0 register class as non-allocatable (#211750)
ZT0 is not available for register allocation, define it with the other
non-allocatable SME register classes and avoid an unnecessary pressure
set.
Assisted-by: codex
https://invent.kde.org/qt/clang/llvm-project/-/commit/820b5cb6d9fe8feda01fbb8b86d68aea10c63130
Git commit ed3470ffd1222be4aa4d6f938e6ba0fae5a2fad7 by GitHub (on behalf of Fangrui Song) on 27/07/2026 at 07:21..
[ELF] Fix -Wc++11-narrowing error in addPltEntry (#212185)
PR #212161 passes the `uint8_t isPreemptible : 1` bit-field straight
into a braced-init-list slot whose parameter type is `bool`.
Older clang (<20 ?) incorrectly rejects it.
```
error: non-constant-expression cannot be narrowed from type 'uint8_t' (aka 'unsigned char') to 'bool' in initializer list [-Wc++11-narrowing]
```
https://invent.kde.org/qt/clang/llvm-project/-/commit/ed3470ffd1222be4aa4d6f938e6ba0fae5a2fad7
Git commit 0cc7159125eacd3abdff94eb7e634c1a8f889d1e by GitHub (on behalf of Rainer Orth) on 27/07/2026 at 07:54..
[sanitizer_common][tests] Skip MemoryMapping::ParseUnixMemoryProfile … (#212114)
…etc. on NetBSD
The `Sanitizer-x86_64-Test` test doesn't link on NetBSD/amd64 10.1:
```
/usr/bin/ld: /usr/bin/ld: DWARF error: invalid or unhandled FORM value: 0x25
SANITIZER_TEST_OBJECTS.sanitizer_procmaps_test.cpp.x86_64.o: in function `__sanitizer::MemoryMapping_ParseUnixMemoryProfile_Test::TestBody()':
sanitizer_procmaps_test.cpp:(.text._ZN11__sanitizer41MemoryMapping_ParseUnixMemoryProfile_Test8TestBodyEv+0x52): undefined reference to `__sanitizer::ParseUnixMemoryProfile(void (*)(unsigned long, unsigned long, bool, unsigned long*), unsigned long*, char*, unsigned long)'
/usr/bin/ld: SANITIZER_TEST_OBJECTS.sanitizer_procmaps_test.cpp.x86_64.o: in function `__sanitizer::MemoryMapping_ParseUnixMemoryProfileTruncated_Test::TestBody()':
sanitizer_procmaps_test.cpp:(.text._ZN11__sanitizer50MemoryMapping_ParseUnixMemoryProfileTruncated_Test8TestBodyEv+0x17a): undefined reference to `__sanitizer::ParseUnixMemoryProfile(void (*)(unsigned long, unsigned long, bool, unsigned long*), unsigned long*, char*, unsigned long)'
```
Fixed by skipping the affected subtest.
Tested on `amd64-pc-netbsd10.1` and `x86_64-pc-linux-gnu`.
https://invent.kde.org/qt/clang/llvm-project/-/commit/0cc7159125eacd3abdff94eb7e634c1a8f889d1e
Git commit b66306c2419ecbb5e02e63728c54814647f0e06c by GitHub (on behalf of Nikita Popov) on 27/07/2026 at 07:54..
[SelectionDAG] Stop forming minnum/maxnum in SDAGBuilder (#187738)
The right place to form these is DAGCombine, not SDAGBuilder. This
removes the SPNB_RETURNS_ANY case, the SPNB_RETURNS_OTHER is left to a
followup. We need to propagate FMF flags in a few more places to make
this work.
https://invent.kde.org/qt/clang/llvm-project/-/commit/b66306c2419ecbb5e02e63728c54814647f0e06c
Git commit 102f572188c5dbf89d92bf533a4bdc4fed1d89bd by GitHub (on behalf of Rainer Orth) on 27/07/2026 at 07:55..
[llvm][cas] Fix OnDiskCASLoggerTest.cpp compilation on NetBSD (#212113)
`CAS/OnDiskCASLoggerTest.cpp` doesn't compile on NetBSD/amd64:
```
In member function `virtual void OnDiskCASLoggerTest_MultiProcess_Test::TestBody()':
llvm/unittests/CAS/OnDiskCASLoggerTest.cpp:230:19: error: reference to `Wait' is ambiguous
230 | auto Result = Wait(PI, /*Timeout=*/15, &Error);
| ^~~~
In file included from llvm/unittests/CAS/OnDiskCASLoggerTest.cpp:15:
llvm/include/llvm/Support/Program.h:212:22: note: candidates are: `llvm::sys::ProcessInfo llvm::sys::Wait(const llvm::sys::ProcessInfo&, std::optional<unsigned int>, std::string*, std::optional<llvm::sys::ProcessStatistics>*, bool)'
212 | LLVM_ABI ProcessInfo Wait(
| ^~~~
In file included from llvm/include/llvm/Support/RWMutex.h:17,
from llvm/include/llvm/Support/ThreadPool.h:21,
from llvm/unittests/CAS/OnDiskCASLoggerTest.cpp:16:
llvm/include/llvm/Support/Threading.h:60:40: note: `llvm::InitStatus llvm::Wait'
60 | enum InitStatus { Uninitialized = 0, Wait = 1, Done = 2 };
| ^~~~
```
This patch removes the ambiguity, matching other uses.
Tested on `amd64-pc-netbsd10.1` and `x86_64-pc-linux-gnu`.
https://invent.kde.org/qt/clang/llvm-project/-/commit/102f572188c5dbf89d92bf533a4bdc4fed1d89bd
Git commit f91647a732298131e86fc4f465b20b80105f35d6 by GitHub (on behalf of Rainer Orth) on 27/07/2026 at 07:56..
[llvm][release] Build openmp as runtime in test-release.sh (#212111)
`test_release.sh` tries to build `openmp` as a project, which breaks the
build:
```
CMake Error at CMakeLists.txt:155 (message):
Support for the LLVM_ENABLE_PROJECTS=openmp build mode has been removed.
Please switch to the bootstrapping build
cmake -S <llvm-project>/llvm -B build -DLLVM_ENABLE_PROJECTS=clang -DLLVM_ENABLE_RUNTIMES=openmp
or to the runtimes default build
cmake -S <llvm-project>/runtimes -B build -DLLVM_ENABLE_RUNTIMES=openmp
```
This patch switches it to a runtime to match.
Tested on `x86_64-pc-linux-gnu`.
https://invent.kde.org/qt/clang/llvm-project/-/commit/f91647a732298131e86fc4f465b20b80105f35d6
Git commit 30a1b346f5c84504e5e998cb45e6551d21645e21 by GitHub (on behalf of Jared Wyles) on 27/07/2026 at 08:08..
[orc-rt] Add StringExtras::join from llvm/adt and tests (#212179)
Tests are appropriate to the use cases that will follow in a PR to
follow.
https://invent.kde.org/qt/clang/llvm-project/-/commit/30a1b346f5c84504e5e998cb45e6551d21645e21
Git commit 5c0a7212c8c8c46969489ae1ee85df1141a76bbb by GitHub (on behalf of Felipe de Azevedo Piovezan) on 27/07/2026 at 08:11..
[lldb][NFC] Add documentation for OperatingSystem methods (#210968)
https://invent.kde.org/qt/clang/llvm-project/-/commit/5c0a7212c8c8c46969489ae1ee85df1141a76bbb
Git commit 3deca05e273382820a164e7acf3efe0c0e441a23 by GitHub (on behalf of Cullen Rhodes) on 27/07/2026 at 08:20..
[AArch64] Remove unused GPR32arg register class (NFC) (#211778)
GPR32arg was added alongside GPR64arg in fcbec02ea6fb, but has no users
outside the register info generated by TableGen.
Assisted-by: codex
https://invent.kde.org/qt/clang/llvm-project/-/commit/3deca05e273382820a164e7acf3efe0c0e441a23
Git commit bb75638cb7fa090bb6e4c4c3e6e15e693a69b1d1 by GitHub (on behalf of Utkarsh Saxena) on 27/07/2026 at 08:23..
[LifetimeSafety][NFC] Refactor AccessPath and Loan representations
(#180369)
This patch refactors the internal representations of `AccessPath` and
`Loan` to support path elements, preparing for field-sensitive and
interior-sensitive lifetime tracking.
* Introduces `PathElement` representing a field or interior dereference.
* Refactors `AccessPath` to contain a base and a list of `PathElement`s.
* Updates `Loan` and `LoanManager` to use the new `AccessPath`
structure.
---
Old PR description:
Refactor loan representation to use structured access paths, enabling
more precise borrow tracking and detection of use-after-invalidation.
Previously, loans were associated only with top-level storage (e.g., a
variable `x`, temporary `t`). This was insufficient for reasoning about
borrows of sub-objects (interior memory regions), such as fields (`x.f`)
or container elements (`vec[0]`), or for modelling views like
`string_view` which borrow the interior of an object.
We modify `AccessPath`, which now consists of a `base` (a _variable_,
_temporary_, or _placeholder_ for _parameters/'this'_) and a sequence of
`PathElements`. A `PathElement` can be a field access (`.field`) or an
interior access (denoted as `.*`), representing an unnamed interior
memory region of an object, like the character buffer of a
`std::string`.
High-level changes:
* `PathLoan` and `PlaceholderLoan` are merged into a single Loan class,
containing an `AccessPath`.
* **Path-Based Expiry**: `ExpireFact` is changed from expiring a single
loan to expiring an `AccessPath`. If `x` goes out of scope, any loan
whose path starts with `x` (e.g., loans to `x`, `x.field`, `x.field.*`)
is now considered expired. The checker uses `isPrefixOf` to detect this.
* **Path Extension in Flows**: `OriginFlowFact` now supports extending
loan paths:
* Field access like for expression `obj.field` extends loans to `obj`
into loans to `obj.field`.
* Owner-to-view conversions like `std::string_view s(str)` extend loans
to `str` into loans to `str.*`.
* **Invalidation**: Container invalidation methods (e.g.,
`vec.push_back()`) invalidate loans whose path is a strict extension of
the container's path (e.g., loans to `vec.*` but not loans to `vec`).
The checker uses `isStrictPrefixOf`.
* **Move-Tracking**: Moves are now tracked based on path prefixes via
`isPrefixOf`.
This refactoring enables detection of use-after-invalidation bugs for
STL containers specially when the container appears as fields.
https://invent.kde.org/qt/clang/llvm-project/-/commit/bb75638cb7fa090bb6e4c4c3e6e15e693a69b1d1
Git commit d211ecfc817f73e1395a0dc32e45b84de7b9bdb3 by GitHub (on behalf of ioana ghiban) on 27/07/2026 at 08:32..
Add TOSA -> EmitC tests for MLGO mock models (#211833)
These tests are the first step towards monitoring the recently enabled
TOSA -> EmitC path that ML optimization models will switch to, for a
fully in-tree, framework free serving alternative.
For simplicity, yet testing the core functionality, these tests don't
use production models, but rather in-tree mock models, generated by
these scripts:
[llvm/lib/Analysis/models/gen-regalloc-eviction-test-model.py](https://github.com/llvm/llvm-project/blob/main/llvm/lib/Analysis/models/gen-regalloc-eviction-test-model.py)
/
[llvm/lib/Analysis/models/gen-inline-oz-test-model.py](https://github.com/llvm/llvm-project/blob/main/llvm/lib/Analysis/models/gen-inline-oz-test-model.py)
\+
[llvm/lib/Analysis/models/saved-model-to-tflite.py](https://github.com/llvm/llvm-project/blob/main/llvm/lib/Analysis/models/saved-model-to-tflite.py)
+
[tosa-converter-for-tflite](https://www.piwheels.org/project/tosa-converter-for-tflite/)
> Note: `saved-model-to-tflite.py` renames the TFLite converted
SavedModel function to `main()`, which causes `clang` errors. Changing
this behaviour requires interventions in Tensorflow, which are out of
scope. Therefore, the functions were manually renamed.
> Note: The includes passed by argument to `clang` should have been
handled by EmitC. This only becomes a problem when compiling these
models standalone. Embedding the models in LLVM does not cause issues.
Nonetheless, future work will ensure `ConvertToEmitC` includes required
libraries for these ops.
https://invent.kde.org/qt/clang/llvm-project/-/commit/d211ecfc817f73e1395a0dc32e45b84de7b9bdb3
Git commit 3b6e754c0a048f034d7241a4eac6ccc8b3d0134c by GitHub (on behalf of Matt Arsenault) on 27/07/2026 at 08:45..
clang/AMDGPU: Rename amdgcn triples to amdgpu in cc1 tests (14) (#212053)
Replace the legacy amdgcn architecture name with amdgpu in various
test triples. This set of updates covers cases that did not have
a set -target-cpu.
Co-authored-by: Claude (Opus 4.8) <[email protected]>
https://invent.kde.org/qt/clang/llvm-project/-/commit/3b6e754c0a048f034d7241a4eac6ccc8b3d0134c
Git commit 2d289b24a9f99c4357d8783c2d4f25fa46ef619a by GitHub (on behalf of Matt Arsenault) on 27/07/2026 at 08:45..
clang/AMDGPU: Migrate clang-linker-wrapper tests to amdgpu triples (15) (#212054)
Co-authored-by: Claude (Opus 4.8) <[email protected]>
https://invent.kde.org/qt/clang/llvm-project/-/commit/2d289b24a9f99c4357d8783c2d4f25fa46ef619a
Git commit ed326421d27ea8c38b11c84aa23bd655063cb4f9 by GitHub (on behalf of Utkarsh Saxena) on 27/07/2026 at 08:55..
[LifetimeSafety][NFC] Update Checker to use prefix comparison interfaces (#207519)
This patch switches the Checker's expiry and invalidation checks to use
`AccessPath::isPrefixOf` instead of equality (`==`).
Since all generated access paths are currently empty, `isPrefixOf` is
behaviourally identical to `==` (NFC). This prepares the checker to
handle nested paths (fields and container interiors) in subsequent
commits.
https://invent.kde.org/qt/clang/llvm-project/-/commit/ed326421d27ea8c38b11c84aa23bd655063cb4f9
Git commit b8de72900b1da9dc1ca1d6a9961a8da7498b2295 by GitHub (on behalf of David Green) on 27/07/2026 at 09:07..
[AArch64][GlobalISel] Rename irtranslater -> irtranslator test. NFC (#212205)
https://invent.kde.org/qt/clang/llvm-project/-/commit/b8de72900b1da9dc1ca1d6a9961a8da7498b2295
Git commit f901499b11c1fe4fec3075a4b2d01e330f3a00c6 by GitHub (on behalf of Elvina Yakubova) on 27/07/2026 at 09:17..
[BOLT] Split unmarked tail code after CFI-bounded functions into separate functions (#176173)
Detect trailing unmarked code after CFI-bounded predecessors
(__BOLT_FDE_FUNC* or symbols whose FDE address range equals their size)
and promote it into separate BinaryFunction objects named
__BOLT_UNMARKED_TAILat<addr>.
A predecessor is only considered when:
- the target is AArch64
- it is not a pseudo or fragment function
- it has slack beyond its recorded size (MaxSize > Size)
- it is CFI-bounded
- no function is already registered at the tail start address
The trailing region is measured conservatively and we bail out (leaving
the slack attached to the predecessor) when:
- the tail range is not fully contained in the predecessor's origin
section
- a data marker ($d) or a constant island overlaps the region
(data-in-code)
- disassembly fails or yields a zero-length instruction
- after trimming trailing padding, the tail is empty (i.e. it contained
only padding) or does not end in a return
- any bytes past the decoded code are non-zero, i.e. not pure zero
padding.
The bug was introduced in commit
[cd27741](https://github.com/llvm/llvm-project/commit/cd27741c1111f8a97af5fbca4153fa94f50ed9f3)
https://invent.kde.org/qt/clang/llvm-project/-/commit/f901499b11c1fe4fec3075a4b2d01e330f3a00c6
Git commit ecd8d61126426b5fd92a48aa02e93c2c4a869577 by GitHub (on behalf of Łukasz Plewa) on 27/07/2026 at 09:30..
[Offload] Add olCreateContext / olDestroyContext / olGetContextInfo API (#209144)
Add the initial Context handle API to liboffload:
- olCreateContext / olDestroyContext
- olGetContextInfo / olGetContextInfoSize
- OL_ERRC_INVALID_CONTEXT error code
- OL_CONTEXT_INFO_{NUM_DEVICES,DEVICES,PLATFORM} queries
This is the first patch in a series. I decided to split the original
change into multiple smaller PRs to make the review process faster and
more manageable.
This patch introduces context management functions, but the context
handle is not used anywhere yet. The following patches will extend the
API to use contexts in:
``` c
ol_result_t olMemAlloc(ol_context_handle_t, ol_device_handle_t, ol_alloc_type_t, size_t, void**);
ol_result_t olMemFree(ol_context_handle_t, void*);
ol_result_t olGetMemInfo(ol_context_handle_t, const void*, ol_mem_info_t, size_t, void*);
ol_result_t olGetMemInfoSize(ol_context_handle_t, const void*, ol_mem_info_t, size_t*);
ol_result_t olCreateQueue(ol_context_handle_t, ol_device_handle_t, ol_queue_handle_t*);
ol_result_t olCreateProgram(ol_context_handle_t, ol_device_handle_t, const void*, size_t, ol_program_handle_t*);
```
You can also take a look at #201398, which contains the first version of
the complete change. I'm cleaning it up as I go, so the patches in this
series are not a direct 1:1 split of that PR.
https://invent.kde.org/qt/clang/llvm-project/-/commit/ecd8d61126426b5fd92a48aa02e93c2c4a869577
Git commit 8dfdcfb11624fe3eba614af21aa739fffd7ae94f by GitHub (on behalf of Lucas Chollet) on 27/07/2026 at 09:37..
[RISCV] Add support for vector registers with -fzero-call-used-regs (#206206)
The implementation is quite straightforward. Compared to the FP or GP
register implementations, the main difference is that we need to
configure the vector registers before clearing them.
Now that the backend supports clearing all standard registers, this
patch makes the clang driver accept all -fzero-call-used-regs options.
https://invent.kde.org/qt/clang/llvm-project/-/commit/8dfdcfb11624fe3eba614af21aa739fffd7ae94f
Git commit bc634a8c98dc0588bcde8f8d37c172841f579ef1 by GitHub (on behalf of Karol Zwolak) on 27/07/2026 at 09:41..
[NFC] remove const_cast in DebugSSAUpdater (#212192)
#206059 added non-const `getInstruction()` overload so we can drop the
const_cast here.
https://invent.kde.org/qt/clang/llvm-project/-/commit/bc634a8c98dc0588bcde8f8d37c172841f579ef1
Git commit cf08d4bc700245f85ce528f6c9f4d9a3fdd316a0 by GitHub (on behalf of blazej-smorawski) on 27/07/2026 at 09:48..
[offload] Align style of level zero plugin with llvm coding standard (#211762)
This patch does a small cleanup of level zero plugin. Mainly I changed
names of variables to use `CamelCase` whenever they relate to our
internal structures - not objects coming directly from level zero API
etc., so I left some variables and arguments like `zeDevice`, but only
if they are directly related to level zero APIs or structures.
Added a few `auto *` declarations, but again - only when they refer to
our internal objects and not to structures from level zero which might
be pointers underneath, but we use them as transparent objects.
Also did small cleanup of unused headers, making sure that we include
directly what we need rather than use transitive dependencies.
@adurang Please let me know if this patch is okay with you, if you think
this will cause more harm then it's worth I'll close it.
---------
Co-authored-by: Łukasz Plewa <[email protected]>
https://invent.kde.org/qt/clang/llvm-project/-/commit/cf08d4bc700245f85ce528f6c9f4d9a3fdd316a0
Git commit 1b3d208c77145b670207a646050bbe2cc8aea567 by GitHub (on behalf of Avi Patel) on 27/07/2026 at 10:00..
[libc++] Implement P1901R2: owner_hash and owner_equal for shared_ptr/weak_ptr (#210551)
Fixes #105372.
## Acknowledgements
Claude assisted with test development.
https://invent.kde.org/qt/clang/llvm-project/-/commit/1b3d208c77145b670207a646050bbe2cc8aea567
Git commit a744ab39c43cf6ae483bbd72613cf589daaade56 by GitHub (on behalf of Vlad Serebrennikov) on 27/07/2026 at 10:04..
[clang] Update C++ DR status page (#212210)
On top of updating the status page, this PR updates the `latest_release`
constant to 22 and fixes a small `cwg_index.html` parsing issue that
arose during the update.
https://invent.kde.org/qt/clang/llvm-project/-/commit/a744ab39c43cf6ae483bbd72613cf589daaade56
Git commit 47e51bdd4fc247008a5c9638f99cb073496e7d2e by GitHub (on behalf of Łukasz Plewa) on 27/07/2026 at 10:28..
[offload] Split olMemAlloc to separate functions (#209196)
At the previous community meeting, we agreed to introduce contexts into
the liboffload API. I also mentioned that, as part of this work, we
could split the allocation function into three separate functions, but
we did not discuss this idea in detail.
This patch only splits the allocation functions, allowing us to discuss
and agree on the proposed interface before introducing contexts into the
`olMemAlloc` API.
Once contexts are added, the device parameter will be removed from host
allocations, and the final interface would look like this:
```c
ol_result_t olMemAllocDevice(ol_context_handle_t, ol_device_handle_t, size_t, void **);
ol_result_t olMemAllocHost(ol_context_handle_t, size_t, void **);
ol_result_t olMemAllocManaged(ol_context_handle_t, ol_device_handle_t, size_t, void **);
```
Currently, for host allocations, the device parameter is required mainly
to determine which plugin should perform the allocation. Once contexts
are introduced, this information will be provided by the context, making
the device parameter redundant.
Requiring both a context and a device for host allocations could also be
misleading, since it is unclear what the device parameter actually
represents in this API.
Assisted by: Claude.
https://invent.kde.org/qt/clang/llvm-project/-/commit/47e51bdd4fc247008a5c9638f99cb073496e7d2e
Git commit e07c6e6ac477058fd7f897879054e8b2f0e8868b by GitHub (on behalf of Varad Rahul Kamthe) on 27/07/2026 at 10:30..
[InstCombine][NFC] Reorder isKnownAlways(Mask) check in foldIntrinsicIsFPClass (#212216)
Fixes #189949
The preceding mask-narrowing step already guarantees `Mask` is a subset
of `Known.KnownFPClasses` by the time the old equality check ran, so
`Mask == Known.KnownFPClasses` was already equivalent (see #190504).
This patch replaces that equality check with `Known.isKnownAlways(Mask)`
(matching the SelectionDAG equivalent's naming) and moves it before the
narrowing step, avoiding a redundant worklist re-visit.
Added a regression test in `is_fpclass.ll`.
https://invent.kde.org/qt/clang/llvm-project/-/commit/e07c6e6ac477058fd7f897879054e8b2f0e8868b
Git commit b1a6c7d4cf9163b2cb347005e8743400b0d0e4fb by GitHub (on behalf of David Green) on 27/07/2026 at 10:31..
[AArch64][GlobalISel] Update legalize tests with concrete types. NFC (#212217)
https://invent.kde.org/qt/clang/llvm-project/-/commit/b1a6c7d4cf9163b2cb347005e8743400b0d0e4fb
Git commit 8e374dbdf2ef1cc74eac8880786e79b2b2dd0890 by GitHub (on behalf of Donát Nagy) on 27/07/2026 at 10:41..
[NFC][analyzer] Eliminate NodeBuilder in VisitBlockExpr (#211865)
This is part of the commit series that gradually eliminates the class
`NodeBuilder` from the analyzer engine.
This is a straightforward case where `makeNodeWithBinding` can be
clearly applied.
The node set `Tmp` was superfluous because we can directly pass the node
to `runCheckersForPostStmt` where it will be implicitly converted to a
one-element set. (There are many precedents for this.)
Also notice that we explicitly pass the `State` to `makeNodeWithBinding`
because it can be different from `Pred->getState()` (which would have
been used implicitly by the 4-argument form of `makeNodeWithBinding`.)
https://invent.kde.org/qt/clang/llvm-project/-/commit/8e374dbdf2ef1cc74eac8880786e79b2b2dd0890
Git commit bd3551611ea19adae70a744be8d4f4ec096a114a by GitHub (on behalf of Marc Auberer) on 27/07/2026 at 10:42..
[IR][NFC] Rename insertDbgValueIntrinsic -> insertDbgValue (#212151)
Rename `insertDbgValueIntrinsic` to `insertDbgValue`, which is
consistent with the other insert helpers like `insertDbgAssign`,
`insertDeclare`, etc.
Also use debug record instead of intrinsic terminology in doc comments.
https://invent.kde.org/qt/clang/llvm-project/-/commit/bd3551611ea19adae70a744be8d4f4ec096a114a
Git commit 9facc238463a8b10189534bb9da2e1e2f7503dd6 by GitHub (on behalf of Florian Hahn) on 27/07/2026 at 10:45..
[SCEV] Avoid building throwaway nodes in SCEVURem_match (NFC) (#212149)
URem matching currently constructs rather complex
`A - ((A udiv B) * B)` expressions just to check if the given expression
is an URem op.
Exit early without building the expression, if neither of the operands
is UDiv.
This gives significant compile-time improvements end-to-end:
* stage1-O3: -0.23%
* stage1-ReleaseThinLTO: -0.24%
* stage1-ReleaseLTO-g: -0.18%
* stage1-aarch64-O3: -0.21%
* stage2-O3: -0.23%
https://llvm-compile-time-tracker.com/compare.php?from=5771cd03344ba3a8df7ed364b6f98451b68fcb30&to=597567670167f7c60be659389bd22b773fbac4ac&stat=instructions:u
PR: https://github.com/llvm/llvm-project/pull/212149
https://invent.kde.org/qt/clang/llvm-project/-/commit/9facc238463a8b10189534bb9da2e1e2f7503dd6
Git commit d81e52ce5c2a639289a369d5d40178f3e9625302 by Matt Arsenault on 27/07/2026 at 11:05..
clang: Start using new amdgpu subarch triples
Fixup invocations using --target=amdgcn + -mcpu to introduce
the subarch in the triple.
For offload toolchains, a single toolchain is constructed for the
top level amdgpu architecture, and the effective triple is used for
target specific tool invocations.
The specifics of the resource directory layout are tbd. This does
try to find resources in the subarch named directory. The paths
are searched at toolchain creation time, so that does not work
when there are multiple subarches.
Fixes #154925
https://invent.kde.org/qt/clang/llvm-project/-/commit/d81e52ce5c2a639289a369d5d40178f3e9625302
Git commit b66692df9952f00e2410046917678fd2e8fff1d3 by Matt Arsenault on 27/07/2026 at 11:05..
clang/AMDGPU: Stop passing redundant -target-cpu to cc1
Now that the exact target is encoded in the triple's subarch field,
-target-cpu is redundant. This avoids polluting the resultant IR with
unwanted "target-cpu" attributes. The net result is the desired codegen
when compiling libraries for a major subarch and linking it into a
program compiled for a specific arch. e.g., compiling for "gfx9-generic"
would pollute the IR with "target-cpu"="gfx9-generic", so codegen
would ultimately be performed for the generic target even after
linking into the concrete gfx9 cpu. The specialization will now be
achieved by merging the triples without the linker or optimization
passes needing to fixup function attributes.
https://invent.kde.org/qt/clang/llvm-project/-/commit/b66692df9952f00e2410046917678fd2e8fff1d3