[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/davidspickett/lldb-register-types-for-stack-5'. Changed from 70c055580c0899d9a7cdb0d2a7b228e8a76a3340 to 328ef15f40fbe781ddbfad3a25731dbbd02c66a4 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 16a941ef3c157c5f958962d5f72e8f0ee9133001 by GitHub (on behalf of Madhur Amilkanthwar) on 06/08/2026 at 05:23.. [VPlan][NFC] Speed up getVectorLoopRegion() with a last-successor walk (#199437) Resolves the TODO in VPlan::getVectorLoopRegion() with a mutable cache on VPlan, shared by both overloads. Measured on an O3 build of the LLVM test suite (~12k TUs): 3,556,267 hits / 126,196 misses (96.57% hit rate). https://invent.kde.org/qt/clang/llvm/-/commit/16a941ef3c157c5f958962d5f72e8f0ee9133001 Git commit 0210bb1044f0541a713e0164924204b4cfb30514 by GitHub (on behalf of Lang Hames) on 06/08/2026 at 06:10.. [ORC] Start decoupling MangleAndInterner from DataLayout. (#214398) Previously MangleAndInterner held a DataLayout reference and mangled names via Mangler::getNameWithPrefix. Replace the stored DataLayout with an internal ManglingMode enum and mangle from that directly, so the class no longer needs to hold a DataLayout. Add two DataLayout-free constructors: one taking an ExecutionSession and an optional ABI name (deriving the mode from the session's target triple), and one taking an explicit ManglingMode. The existing DataLayout constructor is retained, now deriving the mode from the DataLayout. This lets MangleAndInterner be used where no DataLayout is available (e.g. from a bare ExecutionSession). Adds MangleAndInternerTest covering the triple- and mode-based construction paths. https://invent.kde.org/qt/clang/llvm/-/commit/0210bb1044f0541a713e0164924204b4cfb30514 Git commit 0563f0d88d8314edcde7deab465759a84696e894 by GitHub (on behalf of Jean-Didier PAILLEUX) on 06/08/2026 at 06:22.. [flang][MIF] Fix team_type usage in all MIF operations #205953 (#214207) This PR resolves the issue #205953. Its purpose is to correct the use of `team_type` by lowering it to Addr rather than to Box. https://invent.kde.org/qt/clang/llvm/-/commit/0563f0d88d8314edcde7deab465759a84696e894 Git commit ed5f9f9dc15fd5ea18f0da1be5a1b8be8b21b762 by GitHub (on behalf of Federico Bruzzone) on 06/08/2026 at 06:45.. [TailRecElim] Introduce support for shift accumulator optimization (#181331) This PR enables Tail Recursion Elimination (TRE) for functions where the accumulator operation is a shift (`shl`, `lshr`, `ashr`) by a constant amount -- i.e., pseudo-associative relation. As pointed out in #178805, `InstCombine` often strength-reduces multiplications (or `f(x-1) + f(x-1)`) into `shl`. Currently, TRE strictly requires operations to be associative and commutative: https://github.com/llvm/llvm-project/blob/05e908609227e1e8d993659e604a63668dfd2825/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp#L377-L379 This prevents TRE from transforming recursive shifts into loops, creating a phase-ordering problem where canonicalization blocks a structural optimization. This PR does **not** perform shift accumulator optimization when there are multiple base cases: it is reserved for future work. Fixes #178805. https://invent.kde.org/qt/clang/llvm/-/commit/ed5f9f9dc15fd5ea18f0da1be5a1b8be8b21b762 Git commit 073f509daadc94878455548ef471b0949cc4167a by GitHub (on behalf of Pavel Labath) on 06/08/2026 at 06:50.. [libc] Enable UNIT_TEST_ONLY tests in hermetic mode (#213860) This mainly consists of removing the UNIT_TEST_ONLY lines as previous patches made sure the tests work. The only slightly nontrivial part is adding support for C_TEST to the hermetic test macro. After this, the only UNIT_TEST_ONLY tests are those that require the MPFR library. https://invent.kde.org/qt/clang/llvm/-/commit/073f509daadc94878455548ef471b0949cc4167a Git commit 8877db40d77e1a2e1cc3cb3a01bcf963bd4cda01 by GitHub (on behalf of Pavel Labath) on 06/08/2026 at 07:14.. [libc] Implement sleep and usleep for Linux (#213912) Implemented the sleep and usleep entrypoints for Linux. Refactored the syscall implementation out of the public nanosleep entrypoint into a standard internal syscall wrapper. Fixes #214293. Co-authored-by: Jeff Bailey <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/8877db40d77e1a2e1cc3cb3a01bcf963bd4cda01 Git commit 08936cd2a0ca69b4cc6326aea11960e1352e9d91 by GitHub (on behalf of Joshua Rodriguez) on 06/08/2026 at 07:23.. [AArch64][GlobalISel] Add legalisation to G_EXRACT_SUBVECTOR (#207956) Prevent legalisation of this opcode falling back to SDAG. In situations where a G_EXTRACT_SUBVECTOR is being performed on two vectors which aren't double/half the size of each other, represent the extract as build_vector(extract_vector_element, extract_vector_element, ...). https://invent.kde.org/qt/clang/llvm/-/commit/08936cd2a0ca69b4cc6326aea11960e1352e9d91 Git commit 2f4043eb92f789541b483dec8c794ecd67d167c1 by GitHub (on behalf of Jin Huang) on 06/08/2026 at 07:33.. [compiler-rt][pgo] Add profile instrumentation test for coroutines (#213801) This PR adds a compiler-rt test (`instrprof-coroutine-profile.cpp`) to verify PGO profile counter generation and ingestion for C++20 coroutines. During investigating the iFDO profile ingested for coroutine pass, we found that the profile data contains entry counts for the original coroutine function (`foo`), but lacks the entry counters for the split `foo.resume` function. After inspecting [PassBuilderPipelines.cpp](https://github.com/llvm/llvm-project/blob/f7b7ec8d5542dcede1ae607aa74dfe36d7a3c530/llvm/lib/Passes/PassBuilderPipelines.cpp#L1273) confirms that `PGOInstrumentationGen` runs before `CoroSplitPass`. Therefore, - 1) the iFDO profile correctly ingests and associates profile counters with coroutine function `foo`. - 2) Separate function entry counters for `foo.resume` are not expected in the iFDO profile. Added `compiler-rt/test/profile/instrprof-coroutine-profile.cpp` and use `llvm-profdata show` verify coroutine profile data. The IR dump after `PGOInstrumentationGen` confirms that the function entry count is tracking by counter[6] in the 8-element counter for `foo`. ```llvm coro.alloc: ; preds = %entry call void @llvm.instrprof.increment(ptr @__profn__Z3fooi, i64 650973721613012168, i32 8, i32 6) %2 = call i64 @llvm.coro.size.i64() %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef %2) #14 br label %coro.init coro.init: ; preds = %coro.alloc, %entry ``` Co-authored-by: Jin Huang <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/2f4043eb92f789541b483dec8c794ecd67d167c1 Git commit 78c9e64773e6f1f763fa19cb30ec87344ab6baa2 by GitHub (on behalf of Chuanqi Xu) on 06/08/2026 at 07:52.. Revert "[Modules] Handle decl attributes on deserialization the same as during parsing. (#208348)" (#214407) This reverts commit 3ce0df7ca8027229618de9802eeffe1f0023bf74. See https://github.com/llvm/llvm-project/issues/214091 for backgrounds. https://invent.kde.org/qt/clang/llvm/-/commit/78c9e64773e6f1f763fa19cb30ec87344ab6baa2 Git commit 4e67825a75ae70c40549a273d4ade501af9d27a4 by GitHub (on behalf of Pavel Labath) on 06/08/2026 at 08:06.. [libc] (Re)skip tests failing after #213860 (#214425) (At least) two tests enabled by #213860 are failing on the amdgpu bot (which only runs hermetic tests). This patch skips them, but it a different way, so that they keep running in hermetic mode on supported targets. For the sched_test, I add a dependency on the sched_getscheduler target (used in the test) to trigger the auto-skipping logic. The memory utils test fails due to a missing cmp_is_expensive specialization, so I enable the test only on targets which have them (listing targets explicitly). https://invent.kde.org/qt/clang/llvm/-/commit/4e67825a75ae70c40549a273d4ade501af9d27a4 Git commit 4db3dc23cdd6d4c15885ee5de624357571effed4 by GitHub (on behalf of David Spickett) on 06/08/2026 at 08:17.. [lldb][test] Improve error for C++ compiler detection and improve docs (#214199) I did not realise that LLDB_TEST_COMPILER should be the C compiler, so I got: cxx = cc_dir / (cc_prefix + cxx_type + cc_ext) TypeError: can only concatenate str (not "NoneType") to str Config=aarch64-/usr/bin/g++ I have simplified the logic and added a more informative error: RuntimeError: Could not infer C++ compiler name from compiler type "g++" Added a note to the documentation. The CMake description does say "C compiler", but it's easy to gloss over that so I extended that to say how we get the C++ compiler. https://invent.kde.org/qt/clang/llvm/-/commit/4db3dc23cdd6d4c15885ee5de624357571effed4 Git commit 4395e6ad2c876e2098adcc724f36e937b8f007fd by GitHub (on behalf of Pierre van Houtryve) on 06/08/2026 at 08:19.. [AMDGPU] Add `isConvergent=1` to `DS_ATOMIC_*_BARRIER` instructions (#214166) The intrinsic already has it. The instructions may issue a wake-up signal on barrier completion so the set of waves that execute the instruction may not change. The test case shows taildup duplicating the MachineInstrs when `isConvergent=0`. Assisted-By: Claude Opus 4.8 Claude found the reproducer for me after I found the lack of `isConvergent=1` on those instructions. https://invent.kde.org/qt/clang/llvm/-/commit/4395e6ad2c876e2098adcc724f36e937b8f007fd Git commit 91dfa266cee8cb49a052531492ba4b670525278a by GitHub (on behalf of Donát Nagy) on 06/08/2026 at 08:45.. [NFC][analyzer] Introduce the BoundsChecking library (#213957) Building on my recent commit 25d51a8156da0845928e2fc09bb2736507fc5adf this commit moves the general-purpose bounds checking logic from ArrayBoundChecker.cpp to the new files BoundsChecking.{cpp,h}. This new library currently only serves the needs of `security.ArrayBound`, but it will be gradually expanded, generalized and used to bring other bounds checking checkers out of alpha stage. The code is moved without modifications, except for the removal of a TODO note that asks for moving the code into a separate library. https://invent.kde.org/qt/clang/llvm/-/commit/91dfa266cee8cb49a052531492ba4b670525278a Git commit 7448e3e3af1a0a3a4cfc8846669085061177f54b by GitHub (on behalf of Thibaut Goetghebuer-Planchon) on 06/08/2026 at 09:00.. [mlir][tosa] Support more float types in resource transpose folding (#213226) Add support for f4, f8, f16, bf16, and f64 constants backed by DenseResourceElementsAttr. https://invent.kde.org/qt/clang/llvm/-/commit/7448e3e3af1a0a3a4cfc8846669085061177f54b Git commit fc7ec52b88c21caf5e009dcbc02d940b0d60de9d by GitHub (on behalf of Adam Siemieniuk) on 06/08/2026 at 09:05.. [mlir][linalg] Constrain tiling semi-affine maps (#212240) Expands checks in Linalg's tiling implementation in presence of semi-affine indexing maps to reject unsafe tiling configurations. Current tiling can produce incorrect results when tiling occurs on a dimension accessed via semi-affine map. This is due to lack of tile offset tracking as shift in tiled slices cannot be represented today using symbol-free indexing maps. Assisted-by: Claude https://invent.kde.org/qt/clang/llvm/-/commit/fc7ec52b88c21caf5e009dcbc02d940b0d60de9d Git commit 61fd29e7b631d59993d00f6cfe03aaee83d5bf68 by GitHub (on behalf of Gábor Horváth) on 06/08/2026 at 09:12.. [clang][LifetimeSafety] Split live origins into persistent and block-local (#213543) LoanPropagation already keeps origins that cross block boundaries apart from those confined to one block, so that only the former take part in joins. Do the same for LiveOrigins, and share the single prepass that classifies them. Block-local origins are not merely a minor share of the liveness state: many expression origins are made live by a `UseFact` but never killed, because several `OriginFlow` sites propagate only the outermost origin of an expression's list (see the FIXMEs in `handleFunctionCall`), and a `StringLiteral` glvalue origin is only ever a flow's source. Those origins survived to the top of their block and then propagated backward across the whole function. In `EmitARMMVEBuiltinExpr`, of 68644 origins only 490 are persistent, and the liveness map at a block boundary peaked at 11725 entries; it now peaks at 326. `computePersistentOrigins` moves to `FactManager`, which computes it on first use and hands the same bit vector to both analyses. Sharing it is not just an optimization: if the two disagreed on which origins cross boundaries, an origin's liveness could outlive its loans, or the reverse, and the checker intersects the two. Since a block-local origin can still be live at a program point inside its own block, `getLiveOriginsAt` now returns both halves and callers visit each. Median of 7 interleaved runs of a baseline and a patched binary: | translation unit | LiveOrigins | analysis | Frontend | |-------------------------|--------------|----------|----------| | ByteCode/Disasm.cpp | 154.3 → 18.6 | -65.7% | -9.1% | | TargetBuiltins/ARM.cpp | 341.3 → 63.1 | -43.9% | -5.3% | | X86/X86ISelLowering.cpp | 60.1 → 48.2 | -3.3% | -0.3% | | Sema/SemaExprCXX.cpp | 44.5 → 42.0 | -0.4% | -0.4% | On Disasm.cpp MovedLoans and LifetimeChecker drop by 90.3% and 88.0% too, as both iterate the live-origin set at every fact they handle. The synthetic cases in clang/test/Analysis/LifetimeSafety/benchmark.py are unaffected: their origins are all persistent. Diagnostics are unchanged: -Wlifetime-safety-all output is identical on all four translation units above, ~31000 diagnostic lines in total. Assisted-by: Opus 5.0 Co-authored-by: Gabor Horvath <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/61fd29e7b631d59993d00f6cfe03aaee83d5bf68 Git commit 3bdbc635ce70699bb819bb877e31458bdee83934 by GitHub (on behalf of robertvirany) on 06/08/2026 at 09:16.. fix partial reduce sumla expression (#209294) Fixes #209193. `TargetLowering::expandPartialReduceMLA` handled UMLA, SMLA, and FMLA, but fell through to `llvm_unreachable` when expanding `PARTIAL_REDUCE_SUMLA`. This handles SUMLA by sign-extending the signed LHS and zero-extending the unsigned RHS before multiplication. The first commit precommits a SelectionDAG unit test that reproduces the assertion and verifies that expansion creates the expected extensions. https://invent.kde.org/qt/clang/llvm/-/commit/3bdbc635ce70699bb819bb877e31458bdee83934 Git commit ee7a4e9728c4682bcc6450ead3f6cc70066dd0b3 by GitHub (on behalf of Mariusz Sikora) on 06/08/2026 at 09:19.. [AMDGPU][NFC] Add gfx12 +cumode coverage to occupancy-levels.ll (#214210) https://invent.kde.org/qt/clang/llvm/-/commit/ee7a4e9728c4682bcc6450ead3f6cc70066dd0b3 Git commit 1e7a98d90020ea3cfef60e1c0ab85cf2b41a7cb0 by GitHub (on behalf of A. Jiang) on 06/08/2026 at 09:25.. [libc++] Implement LWG2899: Constrain move special functions of `tuple` and `unique_ptr` (#167211) libc++'s `tuple`'s move constructor is well-constrained when initially implemented. So this patch only adds test cases. For `unique_ptr`, its move constructor and move assignment operator were previously unconstrained and thus this patch changes them. There doesn't seem "obviously correct" approach for constraining in pre-C++20 modes, and this patch attempts to use `__nat` trick to avoid turning the functions into templates which are not move special functions. Some tests case are adjusted because false positive of move-assignability of `unique_ptr` is reduced. Comments are updated to reflect that move-constructibility is not actually required for `unique_ptr`'s deleter. This patch also explicitly deletes copy functions of `unique_ptr` in all modes. Previously, they are implicitly deleted since C++11 mode, although the standard wording always explicitly deletes them. Clang seems to be somehow buggy on propagating deleted-ness of special member functions from unnamed structs, while explicit deletion can act as a workaround. The title of this patch is adjusted to reflect the final resolution of LWG2899. --------- Co-authored-by: Louis Dionne <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/1e7a98d90020ea3cfef60e1c0ab85cf2b41a7cb0 Git commit bd74981129559bbc5a87270d91bea98c2e22f9cd by GitHub (on behalf of Pavel Labath) on 06/08/2026 at 09:37.. [libc] Fix two issues in sprintf_test after #213860 (#214435) PR #213860 enabled the test on GPU targets (which only runs hermetic tests), exposing two issues. The first one is passing "pointer" values as `int`s. On AMDGPU, this produced garbage in the high bits of the printed value, presumably the result of reading a short `int` as a (longer) `void *`. On other this probably worked because the value is passed in a register, which (implicitly) zeroes out high bits. I fix this by casting the argument to a `uintptr_t`. The second error is a crash in the wide char test. I restore status quo by disabling that part of the test, but I've filed #214433 to figure out a long term solution. https://invent.kde.org/qt/clang/llvm/-/commit/bd74981129559bbc5a87270d91bea98c2e22f9cd Git commit 510241d1540f79084ae2be64e1e5f989a37ed6a1 by GitHub (on behalf of David Spickett) on 06/08/2026 at 10:02.. [lldb] Convert uses of RegisterTypeFlags into RegisterType (#213886) So we are using the generic interface that will work with all future RegisterType derived classes. Right now we'll only be asked to print RegisterTypeFlags, so there's a few dyn_cast to that. Later we will switch on the kind, and support rendering more types. https://invent.kde.org/qt/clang/llvm/-/commit/510241d1540f79084ae2be64e1e5f989a37ed6a1 Git commit 14a5b52e2a90d437a25f552a23d199bf502fd7e3 by David Spickett on 06/08/2026 at 10:02.. [lldb] Store all XML register types in a single string map We are assuming that their ID's are unique, so there's no need to keep separate maps. We can do basic type checking by checking the kind of the type pointed to. A few more methods were added to the base RegisterType. GetSize() returns 0 for enums because enums don't have a size until they are used by a register. This is not ideal but it works for now. https://invent.kde.org/qt/clang/llvm/-/commit/14a5b52e2a90d437a25f552a23d199bf502fd7e3 Git commit 98704f50a68c9c529a5d13136a3e52f466612818 by David Spickett on 06/08/2026 at 10:02.. use first instance of duplicated ID https://invent.kde.org/qt/clang/llvm/-/commit/98704f50a68c9c529a5d13136a3e52f466612818 Git commit 7a9647509e77c091b57058c0a1ede67209d05257 by David Spickett on 06/08/2026 at 10:02.. Add test for ID overlap https://invent.kde.org/qt/clang/llvm/-/commit/7a9647509e77c091b57058c0a1ede67209d05257 Git commit 855082c6a595832a5c344e04d67dc1eed5c91081 by David Spickett on 06/08/2026 at 10:02.. [lldb] Make RegisterFlagsDetector into RegisterTypesDetector In future it may be generating things other than flags. Functionality is the same, but the interface changes to use RegisterType. https://invent.kde.org/qt/clang/llvm/-/commit/855082c6a595832a5c344e04d67dc1eed5c91081 Git commit 328ef15f40fbe781ddbfad3a25731dbbd02c66a4 by David Spickett on 06/08/2026 at 10:02.. [lldb] Refactor RegisterTypeBuilder This prepares it for emitting union types. Major changes: * Entry function is now a dispatcher to builder functions for each type. * Name mangling is standardised. * The register name parameter is no longer needed and so was removed. https://invent.kde.org/qt/clang/llvm/-/commit/328ef15f40fbe781ddbfad3a25731dbbd02c66a4