[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/petar-avramovic/fp-GISelMatchGenericTypes'. Changed from 0000000000000000000000000000000000000000 to c0f3843c4598f787e4a61cd666db45a0a195b627 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 29bc0749034c4f2bda0752360ecacd4e89d7439c by GitHub (on behalf of Ebuka Ezike) on 29/07/2026 at 11:30.. [lldb] Fix crash on creating string error (#212503) It crashes because the `default` error string may not be a format string compared to the `fallback` error string https://invent.kde.org/qt/clang/llvm/-/commit/29bc0749034c4f2bda0752360ecacd4e89d7439c Git commit 5989d40ab1d0db8333b5976d957a49525d36cf35 by GitHub (on behalf of jeanPerier) on 29/07/2026 at 11:31.. [flang] Wire allocation-placement into the optimizer pipeline (default off) - memory passes unification [3/5] (#210745) Add a hidden -enable-allocation-placement flag that, when set, replaces the stack-arrays and memory-allocation-opt passes in the default FIR optimizer pipeline with the unified allocation-placement pass. The flag is off by default, so the legacy passes remain the default path and behavior is unchanged. When enabled, the pass runs with its default byte-size thresholds; the -fstack-arrays strategy is forwarded through the new stackArrays option. Assisted-by: AI https://invent.kde.org/qt/clang/llvm/-/commit/5989d40ab1d0db8333b5976d957a49525d36cf35 Git commit 6e116760ca4010be890b7fa39c93f2c902ab2a31 by GitHub (on behalf of Alexey Bataev) on 29/07/2026 at 11:42.. [SLP]Initial support for copyables in fmuladd intrinsic Adds llvm.fmuladd as a main operation for copyable elements. A non-fmuladd lane V is modeled as fmuladd(0.0, -0.0, V), which equals -0.0 + V == V for every V. Only the addend operand is supported for now; multiplicand operands may be added later. Reviewers: bababuck, hiraditya, RKSimon Pull Request: https://github.com/llvm/llvm-project/pull/211245 https://invent.kde.org/qt/clang/llvm/-/commit/6e116760ca4010be890b7fa39c93f2c902ab2a31 Git commit a41d59740625948c6b334abbf921d0888b6f0377 by GitHub (on behalf of Hui) on 29/07/2026 at 11:54.. [libc++][test][NFC] remove old UNSUPPORTED clang from clear_padding.pass.cpp (#212690) Follow up PR for comment https://github.com/llvm/llvm-project/pull/211258/changes#r3663614103 I think I must have made an oversight while resolving a merge conflict https://invent.kde.org/qt/clang/llvm/-/commit/a41d59740625948c6b334abbf921d0888b6f0377 Git commit 2545a108f4d173ed509e3eea33753227bdd6f847 by GitHub (on behalf of Florian Hahn) on 29/07/2026 at 12:02.. [VPlan] Compute cost of some VPWidenIntOrFpInductions in VPlan (#202232) Add initial implementation of VPWidenIntOrFpInductionRecipe::computeCost, handling un-truncated inductions. For the first patch, only compute costs in VPlan if there are no truncated inductions (in that case, there are additional differences for the cost model, as previously we would not cost the truncate properly) and the vector loop won't get unrolled (no induction cost). Note that some decision change. This is due to the legacy cost model computing the cost of the original IR, where the induction is scaled in the loop in each iteration (e.g. with mul), while in the vector loop we scale the increment, and there is just an add to increment the induction. This is more accurate than the legacy cost computation. PR: https://github.com/llvm/llvm-project/pull/202232 https://invent.kde.org/qt/clang/llvm/-/commit/2545a108f4d173ed509e3eea33753227bdd6f847 Git commit 6314c9731eafa68837bbbab65e347922134b004a by GitHub (on behalf of firmiana) on 29/07/2026 at 12:05.. [lldb][NFC] Explicitly list unsupported DWARF expression opcodes (#210363) This PR addresses [#202251](https://github.com/llvm/llvm-project/issues/202251). Several opcodes recognized by LLDB's DWARF expression decoding logic currently have no explicit `case` in `DWARFExpression::Evaluate`. They therefore reach the generic default path, which makes it unclear whether their evaluator status is intentional or an omission. Explicitly list the affected opcodes and group them with the existing `DW_OP_xderef`, `DW_OP_xderef_size`, `DW_OP_call2`, and `DW_OP_call4` cases. All twelve known but unsupported opcodes now share an `unimplemented opcode` return, while `default` remains responsible for unknown and vendor-handled opcodes. No opcode evaluation semantics change. The affected opcodes are `DW_OP_call_ref`, `DW_OP_constx`, `DW_OP_const_type`, `DW_OP_regval_type`, `DW_OP_deref_type`, `DW_OP_xderef_type`, `DW_OP_reinterpret`, and `DW_OP_GNU_implicit_pointer`. ## Tests The existing per-opcode status-locking tests in `DWARFExpressionTest.cpp` cover all affected cases and are updated to check the unified diagnostic. https://invent.kde.org/qt/clang/llvm/-/commit/6314c9731eafa68837bbbab65e347922134b004a Git commit d630025295d5ef6724ec9deab162b983ffee6638 by GitHub (on behalf of Felix Ye) on 29/07/2026 at 12:05.. [mlir][toy] Fix Ch6/Ch7 llvm-lowering tests (#212118) Add missing `| FileCheck %s` to `RUN` lines so `CHECK` lines can be verified. Also correct the expected result from `30` to `36`. The result should be `6*6=36`. The example in the tutorial is correct (`3.600000e+01`). https://mlir.llvm.org/docs/Tutorials/Toy/Ch-6/ Signed-off-by: Felix Ye <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/d630025295d5ef6724ec9deab162b983ffee6638 Git commit c53789fcf54979f7986d2e396920b725ce88f3e4 by GitHub (on behalf of Nikolas Klauser) on 29/07/2026 at 12:09.. [libc++][NFC] Clean up atomic_support.h (#212464) We don't support any compilers which don't have the atomic builtins, so we don't need to check whether they exist. There is also no need for an anonymous namespace, since all the functions are inline. https://invent.kde.org/qt/clang/llvm/-/commit/c53789fcf54979f7986d2e396920b725ce88f3e4 Git commit 25cc0d29e2c34966116f897e0db496d94cf91acf by GitHub (on behalf of Sander de Smalen) on 29/07/2026 at 12:09.. [AArch64] NFC: simplify isCopyInstrImpl expression (#212487) To something more intuitive by applying the following logic: * `!isVirtual()` -> `isPhysical()` * `!isPhysical()` -> `isVirtual()` * `(a || b) && (!a || c)` -> `(!a && b) || (a && c)` https://invent.kde.org/qt/clang/llvm/-/commit/25cc0d29e2c34966116f897e0db496d94cf91acf Git commit f53596de0e42e9df10831cb50438bc8b85f826b3 by GitHub (on behalf of Folkert de Vries) on 29/07/2026 at 12:11.. [MIPS][clang] make `_Complex` ABI match GCC (#212119) fixes https://github.com/llvm/llvm-project/issues/212109 From the edits to the release notes: - On MIPS, a `_Complex` value with an integer element type is now returned packed into a single integer register when it fits in one, matching GCC. A `_Complex char` or `_Complex short`, and on N32/N64 also a `_Complex int`, is no longer returned with one part per register. `-fclang-abi-compat=23` restores the previous behavior. (#GH212109) - On MIPS N32/N64, a `_Complex float` or `_Complex double` argument is now packed into integer registers, or onto the stack, once there is no longer room to give each of its parts a floating-point register, matching GCC. Clang previously always passed the parts separately. `-fclang-abi-compat=23` restores the previous behavior. (#GH212109) https://invent.kde.org/qt/clang/llvm/-/commit/f53596de0e42e9df10831cb50438bc8b85f826b3 Git commit 1d6a3dd80b48ad1990ed5e3e11acd3b06d2909b6 by GitHub (on behalf of antoine moynault) on 29/07/2026 at 12:19.. [LinkerWrapper][test] fix test offload-wrapper.ll (#212713) The llc RUN command added in #212614 needs the X86 backend registered https://invent.kde.org/qt/clang/llvm/-/commit/1d6a3dd80b48ad1990ed5e3e11acd3b06d2909b6 Git commit deed195c31f0ece487aa5ef79c90633860f10b93 by GitHub (on behalf of Arseniy Zaostrovnykh) on 29/07/2026 at 12:27.. [analyzer] Prune infeasible states related to concrete ints early to fix a crash (#210912) RangedConstraintManager discards a simplified symbol if it reduces to a concrete integer. This leads to delayed realization that some state might be infeasible (because the concrete integer does not fit in the assumed range), which might produce unexpected null pointers on the following state splits. PthreadLockChecker has fallen just into this trap. It assumes `pthread_mutex_lock` is always called in a feasible state, which is was not true. In particular, in ZFS the analyzer crashes when runs in CTU mode because it reaches `pthread_mutex_lock()` in over-constraint state (see the reduced example in the first commit). Checkers rely on the invariant that a state split can never result in both `StateRef`s being null. To fix this violation of the invariant, this patch helps RangedConstraintManager to realize a state is infeasible and abort its exploration early so no follow-up state split produce unexpected null-null pair. Assisted by Claude Opus 4.8 -- CPP-8665 https://invent.kde.org/qt/clang/llvm/-/commit/deed195c31f0ece487aa5ef79c90633860f10b93 Git commit ed389ca093797baab0bcc95ffd2b6ca41741c40d by GitHub (on behalf of Aochang Liu) on 29/07/2026 at 12:29.. [CodeGen][ARM] Add regression tests for #202263 (#202599) The underlying issue—RegisterCoalescer eliminating an undef COPY and leaving a partial subregister redef that reads a value that no longer exists—was fixed in #204039. This PR adds the regression coverage originally developed alongside the fix attempt, so the pattern remains covered: - an end-to-end IR test that checks the generated assembly with FileCheck; - a focused single-pass `-run-pass=register-coalescer` MIR test using `-verify-coalescing`, which reproduces the "Instruction is reading nonexistent value" verifier error from #202263 when #204039 is reverted, and passes with the fix applied. Fixes #202263 https://invent.kde.org/qt/clang/llvm/-/commit/ed389ca093797baab0bcc95ffd2b6ca41741c40d Git commit e393b0a120de3cc3b0055d129056b30e48777cb6 by GitHub (on behalf of Krzysztof Parzyszek) on 29/07/2026 at 12:30.. [OpenMP] Split UPDATE clause into two: for ATOMIC and for DEPOBJ (#212270) The UPDATE clause has the same spelling on both of these directives, but functionally it's two different clauses. Split them into "update", and "update_depend_objects" to be able to tie their properties to their enum ids. This should make it easier to implement auto-generating of clause properties in the future by avoiding spelling conflicts. --------- Co-authored-by: Alexey Bataev <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/e393b0a120de3cc3b0055d129056b30e48777cb6 Git commit f43c0e2dac8d75362a07e283f44ae20339cd1de2 by GitHub (on behalf of Matt Arsenault) on 29/07/2026 at 12:33.. AMDGPU: Manually convert some MC tests to subarch triples (#212728) https://invent.kde.org/qt/clang/llvm/-/commit/f43c0e2dac8d75362a07e283f44ae20339cd1de2 Git commit 31de6f2c4b4d38bbcabea7a1eeb000f90f368604 by GitHub (on behalf of Arseniy Obolenskiy) on 29/07/2026 at 13:07.. [mlir][SPIR-V] Add SPIRVToLLVM conversions for GL.FSign and GL.SSign (#206934) https://invent.kde.org/qt/clang/llvm/-/commit/31de6f2c4b4d38bbcabea7a1eeb000f90f368604 Git commit 6279654d605a6821a4ece039d13504a15b09ac03 by GitHub (on behalf of Nico Weber) on 29/07/2026 at 13:10.. [gn] port c2fa41286818 (AMDGPUTargetParserDef.inc) (#212763) https://invent.kde.org/qt/clang/llvm/-/commit/6279654d605a6821a4ece039d13504a15b09ac03 Git commit 2f910f66e7e181c8c1b6ed97d44e6f4bceb6c557 by GitHub (on behalf of newgre) on 29/07/2026 at 13:11.. [CopyProf] Add CopyProf instrumentation passes. (#207385) This patch introduces the instrumentation passes and corresponding tests for CopyProf, a profiling tool designed to identify unnecessary object copies in C++ applications. RFC at https://discourse.llvm.org/t/rfc-copysanitizer-csan-detecting-unneccessary-object-copies-at-runtime/91038. Three passes are added: - CopyProfPass inserts enter/exit callback around special member functions. - CopyPRofStoresPass instruments store instructions to track memory modifications. - ModuleCopyProfPass inserts a module constructor to initialize the CopyProf runtime at program startup (will be added later). https://invent.kde.org/qt/clang/llvm/-/commit/2f910f66e7e181c8c1b6ed97d44e6f4bceb6c557 Git commit b3115cd807196e465ce3fc16f0cab58be24e47fc by GitHub (on behalf of lonely eagle) on 29/07/2026 at 13:13.. [mlir][affine] Add useExpensiveMath option to AffineLoopNormalize pass (#211989) This PR integrates constant bound inference into the existing `AffineLoopNormalize` pass under a new `useExpensiveMath` option. When `useExpensiveMath` is enabled (disabled by default due to potential compilation time overhead), the pass leverages `ValueBoundsConstraintSet` (uss presburger) analysis to refine dynamic `affine.for` loop bounds into compile-time constant bounds. RFC: https://discourse.llvm.org/t/rfc-mlir-enable-dynamic-and-tighter-affine-unrolling-via-valueboundsconstraintset/91055/2 --------- Co-authored-by: Oleksandr "Alex" Zinenko <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/b3115cd807196e465ce3fc16f0cab58be24e47fc Git commit c8c6c0ff7461a5a4c19c110d830945967bc97329 by GitHub (on behalf of Matsu) on 29/07/2026 at 13:16.. [flang] Drop nuw on XArrayCoor for non-positive slice steps (#212639) Example: ```fortran z(:, 3:2:-1) = z(:, 1:2) ``` In this code, reverse-section indexing lowers `idx*step` / `diff+adj` with `nuw`. A negative step can make the product negative, so `nuw` is invalid and LLVM `-O2` can drop the stores. Fix: keep `nsw|nuw` only for known positive steps; otherwise keep `nsw` and drop `nuw` (negative, zero, or unknown). https://invent.kde.org/qt/clang/llvm/-/commit/c8c6c0ff7461a5a4c19c110d830945967bc97329 Git commit 03de9b148a19996fd722e9af6d09ecaf95f8a1b2 by GitHub (on behalf of Ian Tayler Lessa) on 29/07/2026 at 13:31.. [mlir][tosa] Extend cancelling block-scaled cast optimisation to bf16 (#212517) The CancellingBlockScaledCastsOptimization optimises away sequences where a block-scaled tensor is cast to fp32 and then cast back to its original block-scaled type. This patch extends it to also cover cases where the intermediate type is bf16, since the 7 bits of mantissa and 8 bits in the exponent are sufficient to encode any `element * scale` product with valid block-scaled type combinations. --------- Signed-off-by: Ian Tayler Lessa <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/03de9b148a19996fd722e9af6d09ecaf95f8a1b2 Git commit dc5f2aae75b1f80cd30c57f9298d63b104da94d4 by GitHub (on behalf of Chirag Patel) on 29/07/2026 at 13:35.. [Analysis] Adding convert_from_arbitrary_fp support in computeKnownFPClass. (#208585) fixes #208437 From LangRef for intrinsic convert_from_arbitrary_fp , "Normal finite values are converted exactly. NaN values follow LLVM’s standard NaN rules; the NaN representation is preserved... and the NaN payload may be truncated or extended..." -> if src has Nan -> preserve nan "If a value exceeds the representable range of the target type (for example, converting Float8E8M0FNU with large exponents to half), the result is converted to infinity with the appropriate sign." https://invent.kde.org/qt/clang/llvm/-/commit/dc5f2aae75b1f80cd30c57f9298d63b104da94d4 Git commit 13a6fc28ac56e0abd84d90e60d9fb325c7c3ec84 by GitHub (on behalf of aokblast) on 29/07/2026 at 13:37.. [benchmark] Back port 2b0bff7 from upstream (#212278) Fix compile error with clang -Werror -Wunused-template (cherry picked from commit 2b0bff7444a8df460daab2e5af18bce45ca00657) https://invent.kde.org/qt/clang/llvm/-/commit/13a6fc28ac56e0abd84d90e60d9fb325c7c3ec84 Git commit 7f0e5f9eb7466f68bb10d418421c9295bf80b345 by GitHub (on behalf of Anonmiraj) on 29/07/2026 at 13:42.. [clang] Cache the analysis-based warning policy in effect (#212213) While benchmarking with warnings enabled, I found that `AnalysisBasedWarnings::getPolicyInEffectAt` runs at the end of every function body, performing six location-sensitive `isIgnored()` queries. This overhead comes from #136323 ([compile-time impact](https://llvm-compile-time-tracker.com/compare.php?from=2a9f77f6bd48d757b2d45aadcb6cf76ef4b4ef32&to=71ce9e26aec00e4af27a69ccfab8ca1773ed7018&stat=instructions:u)). Since these six diagnostics only depend on the diagnostic state at the query location and whether it is in a system header or macro, we can cache the computed policy rather than recomputing it for every function. The cache flushes when a `#pragma clang diagnostic` changes severities, and it bypasses active diagnostic suppression mappings. Compile-time results for this pr: https://llvm-compile-time-tracker.com/compare.php?from=49de424f45389cb757c3cc8c50daf38d024e2314&to=a61503b54e9568254885777cf89f5ca1586ec99f&stat=instructions%3Au https://invent.kde.org/qt/clang/llvm/-/commit/7f0e5f9eb7466f68bb10d418421c9295bf80b345 Git commit 7e1aba74a4f702dbd0b5c2ebc87f88dffb851b6e by GitHub (on behalf of zhijian lin) on 29/07/2026 at 13:44.. Reland [PowerPC] improve performance on the isNan and !isNan function in case of -ffp-model=strict (#212565) 1. reland the patch https://github.com/llvm/llvm-project/pull/204170 2. and fix the regression caused by above patch. https://invent.kde.org/qt/clang/llvm/-/commit/7e1aba74a4f702dbd0b5c2ebc87f88dffb851b6e Git commit e61b2abe8b7d7baef9192b41aa92f123640ca598 by GitHub (on behalf of Cullen Rhodes) on 29/07/2026 at 13:46.. [AArch64] Remove GPR64arg register class (#212457) GPR64arg was added in fcbec02ea6fb to describe X0-X7 for the reserved argument-register check. It is an ABI register set rather than an allocation constraint and should not be used for register allocation. Given it has a single use that only cares about the number of registers, a register class isn't necessary. This exposes that GlobalISel recomputes the minimal register class when a matching inline asm input is tied to a fixed physical-register output. For X2 that class was GPR64arg, getRegistersForValue already asks the target which class implements the output constraint. Retain that class and reuse it for the matching input. Assisted-by: codex https://invent.kde.org/qt/clang/llvm/-/commit/e61b2abe8b7d7baef9192b41aa92f123640ca598 Git commit 2faa90a208a14b7e681dc9122a889c894823814a by GitHub (on behalf of Zach Goldthorpe) on 29/07/2026 at 13:50.. [AMDGPU] Retain subreg when legalising generic operand (#212636) When building a `COPY` to legalise a generic operand whose register class does not match what is expected, the subregister is not retained in the copy, and is not dropped from the newly created virtual destination register. https://invent.kde.org/qt/clang/llvm/-/commit/2faa90a208a14b7e681dc9122a889c894823814a Git commit a463071dc427777a2a2bfc155c6680d7ff220994 by GitHub (on behalf of Marina Taylor) on 29/07/2026 at 14:04.. [LTO] Handle GlobalIFunc in LTOModule::parseSymbols (#212515) Avoids the assert immediately below. Fixes #45694 rdar://182744700 https://invent.kde.org/qt/clang/llvm/-/commit/a463071dc427777a2a2bfc155c6680d7ff220994 Git commit 82c7b9ac09e55cfc9887cb4e0de6221209c690b5 by GitHub (on behalf of Tshaka Lekholoane) on 29/07/2026 at 14:09.. [clang-format] Add Natural option for SortIncludes (#210788) `SortIncludes` currently orders includes lexicographically with the option to ignore case or extension. This adds another option, `Natural`, that compares embedded runs of digits as numbers rather than sequences of characters, matching the "natural sort" behaviour found in most file managers and tools like `sort` when called with the `-V` option. **Disclaimer** AI assistance was used in initial exploration and review but the code is "hand generated". https://invent.kde.org/qt/clang/llvm/-/commit/82c7b9ac09e55cfc9887cb4e0de6221209c690b5 Git commit f2453af624353273325fe888d794a925ea9fe852 by GitHub (on behalf of Jay Foad) on 29/07/2026 at 14:14.. [AMDGPU] Improve MemorySSA walking in isClobberedInFunction (#211817) Consistently call the two argument overload `MemorySSAWalker::getClobberingMemoryAccess(MemoryAccess, MemoryLocation)` to get a clobbering def (according to the AliasAnalysis used by MSSA) before applying the special cases in `isReallyAClobber`. This has the effect of marking more loads as `amdgpu-noclobber` and selecting SMEM load instructions for them. Fixes: ROCM-28492 https://invent.kde.org/qt/clang/llvm/-/commit/f2453af624353273325fe888d794a925ea9fe852 Git commit 2b06cb5e103886e9606d431defcd5159302ab87f by GitHub (on behalf of Dhruva) on 29/07/2026 at 14:23.. [DAGCombine] Freeze after load is scalarized. (#212587) fixes #211567 https://invent.kde.org/qt/clang/llvm/-/commit/2b06cb5e103886e9606d431defcd5159302ab87f Git commit 01891953eea17544f6181bb51c973711a382702b by GitHub (on behalf of Shengxin Pei) on 29/07/2026 at 14:24.. [Clang][OpenMP] Fixed an assertion on omp taskloop transparent (#200663) In https://github.com/llvm/llvm-project/blob/15bb4a97a798ed43b3966c99d37585651b965e5e/clang/lib/Parse/ParseOpenMP.cpp#L3289-L3295 We missed a check for `WrongDirective` before calling `ActOnOpenMPTransparentClause`. This patch adds the missing check. fix #197162 https://invent.kde.org/qt/clang/llvm/-/commit/01891953eea17544f6181bb51c973711a382702b Git commit e854fb756ef1f5e65bd03a16a7d1bde1ebf7769c by GitHub (on behalf of Nico Weber) on 29/07/2026 at 14:33.. [gn build] Port 2f910f66e7e1 (#212782) https://invent.kde.org/qt/clang/llvm/-/commit/e854fb756ef1f5e65bd03a16a7d1bde1ebf7769c Git commit 82a4cd776063b8c1013045b00b6bb3449c45e8b6 by GitHub (on behalf of Zahira Ammarguellat) on 29/07/2026 at 14:51.. [OpenMP] Restore loop variable values after loop-tranformation constructs. (#208533) This patch fixes loop variable finalization for OpenMP 6.0 loop-transformations constructs: `tile`, `stripe`, `reverse`, `interchange` and `fuse` to comply with spec requirement page 371, lines 19-21. The spec requires that "After the execution of the loop-transforming construct, the loop-iteration variables of any of its transformation-affected loops have the values that they would have without the loop-transforming directive". https://invent.kde.org/qt/clang/llvm/-/commit/82a4cd776063b8c1013045b00b6bb3449c45e8b6 Git commit 196b4b6a2dec34c19bca14f4ba15aee56f2abfe7 by GitHub (on behalf of Michael G. Kazakov) on 29/07/2026 at 15:08.. [libc++][pstl] Implementation of a parallel std::adjacent_find() based on std::mismatch() (#210604) This PR implements a parallel `std::adjacent_find()` based on parallel `std::mismatch`. The implementation reshapes the input range as two ranges offset by 1 element and asks `std::mismatch` to find the first equal pair. Part of #99938. https://invent.kde.org/qt/clang/llvm/-/commit/196b4b6a2dec34c19bca14f4ba15aee56f2abfe7 Git commit 705aa2a864d1573a17e62cfbcffbafdab7745a6d by GitHub (on behalf of lijinpei-amd) on 29/07/2026 at 15:14.. [JumpThreading] Materialize PHIs in duplicateCondBranchOnPHIIntoPred (#204859) In duplicateCondBranchOnPHIIntoPred, updateSSA iteratively updates the uses of the instructions of BB (the duplicated block) according to ValueMapping. For PHIs, however, the mapping is inconsistent: the keys refer to the values before the parallel assignment of the PHIs, while the mapped-to values refer to the values after it. E.g. BB: %arr = phi [ %ov.0, %PredBB ], ... %ov.0 = phi [ %ov.sel, %PredBB ], ... ---> %arr => %ov.0 %ov.0 => %ov.sel So an iterative replacement miscompiles: a use of the duplicated %arr is replaced by %ov.sel, while the correct replacement is %ov.0. Fix this by splitting PredBB -> BB (SplitEdge) into a PredEdgeBB, cloning the PHIs into PredEdgeBB and mapping BB's PHIs to the clones: BB: %arr = phi [ %ov.0, %PredEdgeBB ], ... %ov.0 = phi [ %ov.sel, %PredEdgeBB ], ... PredEdgeBB: %arr.dup = phi [ %ov.0, %PredBB ] %ov.0.dup = phi [ %ov.sel, %PredBB ] ---> %arr => %arr.dup %ov.0 => %ov.0.dup Since a distinct set of PHIs is used as the mapped-to values, the iterative replacement is correct. Fixes #197725. Fixes #203868. Assisted-by: Opus-4.8 (Claude Code) https://invent.kde.org/qt/clang/llvm/-/commit/705aa2a864d1573a17e62cfbcffbafdab7745a6d Git commit be76618bc973b0009fa0618fbc6978f4c74bfdc7 by GitHub (on behalf of Charles Zablit) on 29/07/2026 at 15:24.. [lldb][Windows] Check for EOF before the ctrl-c retry in GetLine (#212745) On Windows `lldb --repl` can hang forever instead of exiting at EOF. `IOHandlerEditline::GetLine` checks `GetLastError() == ERROR_OPERATION_ABORTED` and does a `continue` before checking `feof`. However `fgets` is a CRT function and does not set the Win32 last error value, so the `GetLastError` read is not the expected error. When it happens to be `ERROR_OPERATION_ABORTED` (995) the loop never reaches the EOF check. This reorders the checks so EOF wins unconditionally, and adds `clearerr` before the ctrl-c retry (a real interrupt leaves the error flag set, which would fail the next `fgets`). ctrl-c handling is otherwise unchanged. rdar://183335061 https://invent.kde.org/qt/clang/llvm/-/commit/be76618bc973b0009fa0618fbc6978f4c74bfdc7 Git commit 4fabb4360701da1210f0456f2bcc05f8dfa1a0c0 by GitHub (on behalf of Gaëtan Bossu) on 29/07/2026 at 15:29.. [AArch64][CostModel] Lower wide fixed-length vector reductions cost (#211824) When vscale is known > 1, SVE will be used to perform most reductions. This should be reflected in the cost model. https://invent.kde.org/qt/clang/llvm/-/commit/4fabb4360701da1210f0456f2bcc05f8dfa1a0c0 Git commit 312aa8cf8ccd97c0d2a6980c0a0fb9ee0ee5290e by GitHub (on behalf of Adrian Prantl) on 29/07/2026 at 15:30.. [LLDB] Remove Xcode sdk guessing from Makefile.rules (NFC) (#212378) This cleanup patch pushes the auto-detection of the `macosx` SDK from Makefile.rules up into `dotest.py` and unifies it with the existing SDK handling for other Apple platforms. Assisted-by: claude https://invent.kde.org/qt/clang/llvm/-/commit/312aa8cf8ccd97c0d2a6980c0a0fb9ee0ee5290e Git commit e3f24d8cf7d07d8c7f6208e5cce4b422cb1d0806 by GitHub (on behalf of John Brawn) on 29/07/2026 at 15:36.. [LoopIdiom] Use SCEV for deciding memmove validity (#211274) When the loop index variable is smaller than the GEP offset size, and is thus sign or zero extended before being used, then the IR that is expanded from the SCEV expressions for the load and store locations will be in a form that means GetPointerBaseWithConstantOffset can't deduce the base and offset, meaning we can't generate memmove. Solve this by deciding memmove validity based on the SCEV expressions instead of the IR that is expanded from them. This means we also need to insert a check to handle a null base pointer, as that was previously handled implicitly due to how SCEVExpander expands expressions involving null pointers. https://invent.kde.org/qt/clang/llvm/-/commit/e3f24d8cf7d07d8c7f6208e5cce4b422cb1d0806 Git commit c0f3843c4598f787e4a61cd666db45a0a195b627 by Petar Avramovic on 29/07/2026 at 16:26.. GlobalISel: Don't use GISelMatchGenericTypes for floating point opcodes AMDGPU ends up with same input pattern that check for v2s16 so the one that is first in tablegen table always fires (it was v2f16 in this case). Should explictly check for f16/bf16 and v2f16/vsbf16. https://invent.kde.org/qt/clang/llvm/-/commit/c0f3843c4598f787e4a61cd666db45a0a195b627