[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/arsenm/codegen/makelibcall-graceful-no-libcall-error'. Changed from 0000000000000000000000000000000000000000 to c5d85d8ab23bac8c39ed3de003cdd86499c104bc 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 8c6343b18fb6592d2e5ed708cd1bf46773f206a6 by GitHub (on behalf of Bagodiya) on 08/08/2026 at 17:51.. [InstCombine] Fold cttz(mul X, OddC) -> cttz(X) (#214376) InstCombine already turns cttz(X, false) into cttz(X, true) when a dominating condition proves X != 0. Issue #213877 points out this fails once X is multiplied by an odd constant: the reproducer's `mul i64 %x, 3` carries no nsw/nuw, so isNonZeroMul can't prove the product is nonzero and the flag is never set. Multiplying by an odd constant preserves the trailing-zero count, so add cttz(mul X, OddC) -> cttz(X). Rewriting the operand back to X is what unblocks the existing reasoning: the branch form (test0_odd_mul in known-non-zero.ll) is then handled by the known-non-zero path in foldCttzCtlz, and the select form by the existing relaxation in foldSelectCttzCtlz. cttz-only -- the identity does not hold for ctlz. Alive2: https://alive2.llvm.org/ce/z/z8vw4m Counterexample for an even multiplier: https://alive2.llvm.org/ce/z/yAgT8r Fixes #213877 https://invent.kde.org/qt/clang/llvm/-/commit/8c6343b18fb6592d2e5ed708cd1bf46773f206a6 Git commit 59c18a5e2e606e5edf56d427a48a02d6869b4142 by GitHub (on behalf of AZero13) on 08/08/2026 at 17:52.. [InstCombine] Simplify fractions when there is no overflow (#210516) Use Greatest Common Factor to avoid making bigger immediates. Alive2 Proof: https://alive2.llvm.org/ce/z/3gEVTV Resolves #210452 https://invent.kde.org/qt/clang/llvm/-/commit/59c18a5e2e606e5edf56d427a48a02d6869b4142 Git commit 210c0ba72b0c10c04bcf553eb23cabce038cd253 by GitHub (on behalf of Matt Arsenault) on 08/08/2026 at 17:59.. X86: Simplify the EH_LABEL Expand condition (#213130) Re-express the opt-out handling of EH_LABEL. The special case is 32-bit non-GNU Windows, and the net result is to skip printing unused labels. Try to make this more comprehensible to help figure out where this logic should really be. I want to eliminate use of the TargetOptions::ExceptionModel, which ideally wouldn't be needed in a TargetLowering constructor. Co-authored-by: Claude (Claude-Opus-4.8) <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/210c0ba72b0c10c04bcf553eb23cabce038cd253 Git commit 51fc70599559b2f04bef0d7adc47ecf16343b44c by GitHub (on behalf of Hadong Lee) on 08/08/2026 at 18:11.. [InstCombine] Fold comparisons of x & -x with 0 and 1 (#213709) This folds equality comparisons of `x & -x` with zero and one: - `(x & -x) == 0` to `x == 0` - `(x & -x) != 0` to `x != 0` - `(x & -x) == 1` to `trunc x to i1` - `(x & -x) != 1` to `!(trunc x to i1)` The fold supports scalar, fixed-vector, and scalable-vector integer types wider than `i1`. The `!= 1` fold is limited to one-use `and` instructions to avoid increasing the instruction count. Alive2: https://alive2.llvm.org/ce/z/Zwy2hW Fixes #213708 https://invent.kde.org/qt/clang/llvm/-/commit/51fc70599559b2f04bef0d7adc47ecf16343b44c Git commit fe4a02e9ccc5a0e612eeaca9a384040455504bd0 by GitHub (on behalf of Shilei Tian) on 08/08/2026 at 18:13.. [AMDGPU] Fix a decoder crash in disassembler (#214969) Fixes #214915. https://invent.kde.org/qt/clang/llvm/-/commit/fe4a02e9ccc5a0e612eeaca9a384040455504bd0 Git commit df633b22c76997a9b189d02995528610f0858293 by GitHub (on behalf of FathimaHaris) on 08/08/2026 at 18:16.. [InstCombine] Fold icmp on frexp exponent to fcmp on fabs(x) (#210711) Recognize signed icmp predicates comparing extractvalue(frexp(x), 1) against an integer constant and rewrite them as equivalent fcmp comparisons of fabs(x) against the corresponding power-of-two threshold. frexp(x) returns a mantissa in [0.5, 1) and an exponent E such that 2^(E-1) <= | x | < 2^E. When code only checks that exponent against a constant, the comparison can be rewritten directly in terms of | x |, dropping the need for frexp's exponent output: icmp spred i32 (extractvalue (frexp x), 1), C --> fcmp fpred float (fabs x), 2^ExpVal Predicate mapping: - slt --> olt (ExpVal = C-1) - sgt --> oge (ExpVal = C) Alive2 Generic proof: https://alive2.llvm.org/ce/z/aqEu4p Fixes #186554 . **Test updates** This patch also updates frexp-implied-exponent-range-dominating-conditions.ll. The _nofold tests in this file were originally checking that the dominating condition alone could not fold the comparison to a constant. After this patch, the remaining frexp exponent comparison is itself recognized by the new fold, so these tests now simplify to fabs/fcmp. At the -passes=instcombine pass , the transformed IR temporarily contains two fabs calls (one from the dominating-condition fold and one introduced by this transform). A later optimization pass in the full -O3 pipeline removes the duplicate fabs, producing the fully simplified IR. Alive2 proofs: - -passes=instcombine : https://alive2.llvm.org/ce/z/ZLHh8V - Full -O3 pipeline : https://alive2.llvm.org/ce/z/5P3pUC https://invent.kde.org/qt/clang/llvm/-/commit/df633b22c76997a9b189d02995528610f0858293 Git commit caf83f904bf468bc534b4ecf7f0fc4bc77713ff1 by GitHub (on behalf of Arseniy Obolenskiy) on 08/08/2026 at 18:37.. [SPIR-V] Fix FaceForward combine erasing unrelated users (#214626) Only erase the matched select and let normal DCE remove producers that actually become dead https://invent.kde.org/qt/clang/llvm/-/commit/caf83f904bf468bc534b4ecf7f0fc4bc77713ff1 Git commit 066dfd519323589e89847e65a40d4a9836f61188 by GitHub (on behalf of Jean-Didier PAILLEUX) on 08/08/2026 at 18:56.. [flang][MIF] Update prif_coarray_handle in accordance with PRIF 0.8 #214080 (#214747) In PRIF revision 0.8, the representation of `prif_coarray_handle` was changed. This PR updates this representation for this type and updates the MIFOpConversion pass for the relevant operations. Fixes issue #214080 A minor fix has been made to the deallocation to ensure that, on the Flang side, the variable is properly deallocated, since previously the deallocation was only performed at the `coarray_handle` level. https://invent.kde.org/qt/clang/llvm/-/commit/066dfd519323589e89847e65a40d4a9836f61188 Git commit debad8323724adb0682eb3d9cb0940b137b24e8a by GitHub (on behalf of Nico Weber) on 08/08/2026 at 19:13.. [gn] port 0ca4b9dd78f8 (#215008) https://invent.kde.org/qt/clang/llvm/-/commit/debad8323724adb0682eb3d9cb0940b137b24e8a Git commit 20c3476c21a7f1c8c074f67cc287c9dc9fc41629 by GitHub (on behalf of Folkert de Vries) on 08/08/2026 at 19:29.. [Sparc][NFC] add sparc64 `va_arg` tests (#214993) https://invent.kde.org/qt/clang/llvm/-/commit/20c3476c21a7f1c8c074f67cc287c9dc9fc41629 Git commit bf300bd6d6f321458f2e35dc6fa439eedecaad7d by GitHub (on behalf of Pavel Labath) on 08/08/2026 at 19:33.. [libc] Enable unistd.h on linux/arm and aarch64 (#214429) This enables the unistd.h header and all functional entry points for linux/arm. I've disabled a handful of functions which do not work because of 32-vs-64 bit mismatches (in file offsets and times). In theory these should work in full build mode, but we don't have bot coverage for this config, so I'm not enabling them anywhere. This is also why I'm not enabling full-build-only entry points which are enabled on other architectures. While comparing the unistd entry point lists across architectures, I noticed that linux/aarch64 was missing chown and getgid. I've added those as well. Assisted by Gemini. https://invent.kde.org/qt/clang/llvm/-/commit/bf300bd6d6f321458f2e35dc6fa439eedecaad7d Git commit 9c39cd9aedd20e394e29112e6848c57a35f39836 by GitHub (on behalf of Pavel Labath) on 08/08/2026 at 19:35.. [libc] Read multiple interfaces per netlink message in if_nameindex (#213952) This patch changes it to collect all interfaces in the buffer using BlockStore<InterfaceEntry, 16>. I'm storing interface names as a fixed char array (IF_NAMESIZE) in InterfaceEntry so that we're ready for the next step when we reuse the recvfrom buffer across multiple messages. Once all messages in the buffer are parsed, I allocate a single contiguous buffer containing all struct if_nameindex entries and strings. To keep if_nameindex() readable, I've split the implementation into two helper functions: parse_netlink_messages() and build_if_nameindex_list(). https://invent.kde.org/qt/clang/llvm/-/commit/9c39cd9aedd20e394e29112e6848c57a35f39836 Git commit a4897aa410ebe7ff4f174c16698ac7b66db4304e by GitHub (on behalf of Min-Yih Hsu) on 08/08/2026 at 19:44.. [SDPatternMatch] Add m_NU/SWAdd and m_NU/SWAddLike (#214876) These are the SDPatternMatch counterpart of `m_NU/SWAdd` and `m_NU/SWAddLike` in IR PatternMatch. https://invent.kde.org/qt/clang/llvm/-/commit/a4897aa410ebe7ff4f174c16698ac7b66db4304e Git commit c5d85d8ab23bac8c39ed3de003cdd86499c104bc by Matt Arsenault on 08/08/2026 at 23:03.. DAG: Gracefully diagnose missing lrint/llrint/lround/llround libcall Avoid hitting the fatal error in makeLibCall by emitting a diagnostic if the library call is unsupported. Co-authored-by: Claude (Claude-Opus-4.8) <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/c5d85d8ab23bac8c39ed3de003cdd86499c104bc