[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/lukel97/loop-vectorize/simplifyRecipes-worklist-inserter'.
Changed from 7e944a8f7c81b6659d10177d797131b1a1e342f2 to fa4bd2570b34d3d3f020eefd9626f33b621d3ef1
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 34323ab08e6eed2caff556ecdeae20053cbaaae7 by GitHub (on behalf of Jonas Devlieghere) on 07/08/2026 at 05:21..
[lldb] Fix the lazy initialization of Module's global collections (NFC) (#214630)

Both collections were initialized with a check-then-set on a null
pointer, which is race-y. We can achieve the same thing by initializing
the pointer with the allocation, while retaining the leak.
https://invent.kde.org/qt/clang/llvm/-/commit/34323ab08e6eed2caff556ecdeae20053cbaaae7

Git commit fab90faf86a5846f7ed73c1caf322dcc79a6af5e by GitHub (on behalf of Kane Wang) on 07/08/2026 at 05:36..
[RISCV][GlobalISel] Legalize G_LROUND/G_LLROUND (#213889)

Add legalizer rules so `llvm.lround/llround` lower to`
fcvt.{w,l}.{h,s,d}` with FRM_RMM.
https://invent.kde.org/qt/clang/llvm/-/commit/fab90faf86a5846f7ed73c1caf322dcc79a6af5e

Git commit 424588ce0a14c9a310687424d8f0318553ef3fa7 by GitHub (on behalf of Sam Elliott) on 07/08/2026 at 05:41..
[AsmPrinter] Emit type and size for Constant Pool Entries (#214387)
https://invent.kde.org/qt/clang/llvm/-/commit/424588ce0a14c9a310687424d8f0318553ef3fa7

Git commit 5c3123a6ae4953762b90821ddcdcbd7f4c4cd557 by Luke Lau on 07/08/2026 at 05:43..
[VPlan] Make simplifyRecipe more like InstCombine

Most combines in simplifyRecipe RAUW a value, but not all of them erase the old recipe.
Unify them and bring it in line with InstCombine by having it return a VPValue, which simplifyRecipes can then call RAUW with, and automatically erase the old recipe.

Similarly to InstCombine, combines that modify a recipe should return the same recipe.
https://invent.kde.org/qt/clang/llvm/-/commit/5c3123a6ae4953762b90821ddcdcbd7f4c4cd557

Git commit e723bdfdef3da9a787d553efd07783a6fc5aec12 by Luke Lau on 07/08/2026 at 05:43..
Update trunc combine, fix m_Not return position
https://invent.kde.org/qt/clang/llvm/-/commit/e723bdfdef3da9a787d553efd07783a6fc5aec12

Git commit a6b2f97f127760840f8f724206c7c0ddc83907d3 by Luke Lau on 07/08/2026 at 05:43..
Precommit test
https://invent.kde.org/qt/clang/llvm/-/commit/a6b2f97f127760840f8f724206c7c0ddc83907d3

Git commit f5f9e87384e8272a4611ed7273947457426c9923 by Luke Lau on 07/08/2026 at 05:43..
[VPlan] Process simplifyRecipes in a worklist

This brings simplifyRecipes further in line with InstCombine, and asides from unlocking more simplifications it also helps avoid spurious test churn whenever passes are moved around simplifyRecipes.

For now just push the new recipe onto the worklist, not its users.
This uses a post order traversal so we maintain the same simplification order as before.

I've gone through and checked every simplification we do is a canonicalisation that converges, and I checked on llvm-test-suite + SPEC CPU 2017 in various configurations that we don't hit any cycles.
https://invent.kde.org/qt/clang/llvm/-/commit/f5f9e87384e8272a4611ed7273947457426c9923

Git commit dd95c05c624ece2ad7fc25b739c527323267fb3f by Luke Lau on 07/08/2026 at 05:43..
Precommit test
https://invent.kde.org/qt/clang/llvm/-/commit/dd95c05c624ece2ad7fc25b739c527323267fb3f

Git commit fa4bd2570b34d3d3f020eefd9626f33b621d3ef1 by Luke Lau on 07/08/2026 at 05:43..
[VPlan] Append recipes created via builder to worklist

The previous PR appended the top most created recipe to the worklist, and this PR extends it to any other nested recipes that were created, similar to InstCombine.

This removes the header mask in a good few more places on RISC-V as measured on SPEC CPU 2017, e.g. for the following loop:

```c
long f(const int *p, const int *q, long n) {
  long a = 0, b = 0;
  for (long i = 0;; i++) {
    if (p[i] && q[i]) { a += i; b += i; }
    if (i + 1 == n) break;
  }
  return a + b;
}
```

Before:

```asm
LBB0_1:
        sh2add  a4, a3, a0
        vsetvli a5, a2, e32, m1, ta, ma
        vle32.v v16, (a4)
        vmsne.vi        v0, v16, 0
        sh2add  a4, a3, a1
        vsetvli zero, zero, e64, m2, ta, ma
        vmsltu.vx       v16, v10, a5
        vle32.v v17, (a4), v0.t
        vsetvli zero, zero, e32, m1, ta, ma
        vmsne.vi        v17, v17, 0
        vmand.mm        v17, v0, v17
        vmand.mm        v0, v16, v17
        vsetvli zero, zero, e64, m2, tu, mu
        vadd.vv v8, v14, v8, v0.t
        vadd.vv v12, v14, v12, v0.t
        vsetvli zero, zero, e64, m2, ta, ma
        vadd.vx v14, v14, a5
        sub     a2, a2, a5
        add     a3, a3, a5
        bnez    a2, .LBB0_1
```

After:

```
.LBB0_1:
	sh2add	a4, a3, a0
	vsetvli	a5, a2, e32, m1, ta, ma
	vle32.v	v14, (a4)
	vmsne.vi	v0, v14, 0
	sh2add	a4, a3, a1
	vle32.v	v14, (a4), v0.t
	vmsne.vi	v14, v14, 0
	vmand.mm	v0, v0, v14
	vsetvli	zero, zero, e64, m2, tu, mu
	vadd.vv	v8, v12, v8, v0.t
	vadd.vv	v10, v12, v10, v0.t
	vsetvli	zero, zero, e64, m2, ta, ma
	vadd.vx	v12, v12, a5
	sub	a2, a2, a5
	add	a3, a3, a5
	bnez	a2, .LBB0_1
```

This copies the IRBuilderInstCombineInserter for IRBuilder approach from InstCombine, but templating VPBuilder + adding a VPBuilderBase seemed overkill so I've just made a dervied class with a virtual method instead, which does the same thing.

We can also remove the (X && Y) | (X && !Y) -> X combine, but this is left for another NFC PR.
https://invent.kde.org/qt/clang/llvm/-/commit/fa4bd2570b34d3d3f020eefd9626f33b621d3ef1
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.