[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/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/commit/c5d85d8ab23bac8c39ed3de003cdd86499c104bc
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.