LLVM/project 30fd90dmlir/lib/Dialect/Bufferization/Transforms StaticMemoryPlannerAnalysis.cpp, mlir/test/Dialect/Bufferization/Transforms static-memory-planner-analysis.mlir static-memory-planner-errors.mlir

[mlir][bufferization] Address review feedback on arith.select dealloc pass

- Use BufferViewFlowOpInterface instead of hardcoded arith::SelectOp check,
  so any future op implementing the interface is handled automatically
- Error out (not skip) when no dealloc or cross-block dealloc is found;
  the only valid skip is dynamic shapes
- Remove redundant potentialCandidates vector copy in collectCandidates
- Replace erasedDeallocs with deallocsToErase set in rewriteAllocations
- Remove outdated comment about group constraint
- Add error tests for missing-dealloc and cross-block cases
DeltaFile
+48-47mlir/lib/Dialect/Bufferization/Transforms/StaticMemoryPlannerAnalysis.cpp
+6-34mlir/test/Dialect/Bufferization/Transforms/static-memory-planner-analysis.mlir
+24-0mlir/test/Dialect/Bufferization/Transforms/static-memory-planner-errors.mlir
+78-813 files

LLVM/project 598f152llvm/lib/Transforms/Scalar ConstraintElimination.cpp, llvm/test/Transforms/ConstraintElimination constraint-overflow.ll

[ConstraintElim] Fix integer overflow when negating constraint (#210627)

Negating a coefficient (e.g. INT64_MIN) can overflow; skip adding the
inverted constraint if it wraps.

Fixes an UBSan failure for the added test.
DeltaFile
+26-0llvm/test/Transforms/ConstraintElimination/constraint-overflow.ll
+2-1llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+28-12 files

LLVM/project 6bcdcb3llvm/lib/DWARFLinker/Parallel SyntheticTypeNameBuilder.cpp

[DWARFLinker] Make synthetic type names deterministic under threading (#209553)
DeltaFile
+7-4llvm/lib/DWARFLinker/Parallel/SyntheticTypeNameBuilder.cpp
+7-41 files

LLVM/project 83d52c3llvm/tools/llvm-reduce ReducerWorkItem.cpp

fixfix

Created using spr 1.3.7
DeltaFile
+0-1llvm/tools/llvm-reduce/ReducerWorkItem.cpp
+0-11 files

LLVM/project 2519098llvm/test/tools/llvm-reduce initialize-asm-parsers.ll

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+1-1llvm/test/tools/llvm-reduce/initialize-asm-parsers.ll
+1-11 files

LLVM/project d9030cfllvm/test/tools/llvm-reduce initialize-asm-parsers.ll

fix

Created using spr 1.3.7
DeltaFile
+1-1llvm/test/tools/llvm-reduce/initialize-asm-parsers.ll
+1-11 files

LLVM/project d51a74cllvm/docs NVPTXUsage.rst NVPTXUsage.md, llvm/test/CodeGen/AMDGPU amdgpu-codegenprepare-idiv.ll

rebase

Created using spr 1.3.7
DeltaFile
+23,904-12llvm/test/CodeGen/RISCV/clmul.ll
+0-4,767llvm/docs/NVPTXUsage.rst
+2,949-1,487llvm/test/CodeGen/NVPTX/atomicrmw-sm60.ll
+2,871-1,461llvm/test/CodeGen/NVPTX/atomicrmw-sm70.ll
+4,253-0llvm/docs/NVPTXUsage.md
+1,510-2,221llvm/test/CodeGen/AMDGPU/amdgpu-codegenprepare-idiv.ll
+35,487-9,9489,490 files not shown
+250,411-118,8579,496 files

LLVM/project 268bd17llvm/docs NVPTXUsage.rst NVPTXUsage.md, llvm/test/CodeGen/AMDGPU amdgpu-codegenprepare-idiv.ll

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+23,904-12llvm/test/CodeGen/RISCV/clmul.ll
+0-4,767llvm/docs/NVPTXUsage.rst
+2,949-1,487llvm/test/CodeGen/NVPTX/atomicrmw-sm60.ll
+2,871-1,461llvm/test/CodeGen/NVPTX/atomicrmw-sm70.ll
+4,253-0llvm/docs/NVPTXUsage.md
+1,510-2,221llvm/test/CodeGen/AMDGPU/amdgpu-codegenprepare-idiv.ll
+35,487-9,9489,487 files not shown
+250,404-118,8479,493 files

LLVM/project fc985f0llvm/docs NVPTXUsage.rst NVPTXUsage.md, llvm/test/CodeGen/AMDGPU amdgpu-codegenprepare-idiv.ll

rebase

Created using spr 1.3.7
DeltaFile
+23,904-12llvm/test/CodeGen/RISCV/clmul.ll
+0-4,767llvm/docs/NVPTXUsage.rst
+2,949-1,487llvm/test/CodeGen/NVPTX/atomicrmw-sm60.ll
+2,871-1,461llvm/test/CodeGen/NVPTX/atomicrmw-sm70.ll
+4,253-0llvm/docs/NVPTXUsage.md
+1,510-2,221llvm/test/CodeGen/AMDGPU/amdgpu-codegenprepare-idiv.ll
+35,487-9,9489,487 files not shown
+250,404-118,8479,493 files

LLVM/project 174afe1llvm/docs NVPTXUsage.rst NVPTXUsage.md, llvm/test/CodeGen/AMDGPU amdgpu-codegenprepare-idiv.ll

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+23,904-12llvm/test/CodeGen/RISCV/clmul.ll
+0-4,767llvm/docs/NVPTXUsage.rst
+2,949-1,487llvm/test/CodeGen/NVPTX/atomicrmw-sm60.ll
+2,871-1,461llvm/test/CodeGen/NVPTX/atomicrmw-sm70.ll
+4,253-0llvm/docs/NVPTXUsage.md
+1,510-2,221llvm/test/CodeGen/AMDGPU/amdgpu-codegenprepare-idiv.ll
+35,487-9,9489,487 files not shown
+250,404-118,8479,493 files

LLVM/project f0c08a4clang/lib/ScalableStaticAnalysis/Analyses/UnsafeBufferUsage UnsafeBufferUsageAnalysis.cpp

address comment
DeltaFile
+26-39clang/lib/ScalableStaticAnalysis/Analyses/UnsafeBufferUsage/UnsafeBufferUsageAnalysis.cpp
+26-391 files

LLVM/project ae02349llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer splat-buildvector.ll

[SLP]Add umax/umin/smax/smin as main opcodes for copyables

Added umax/umin/smax/smin intrinsics in for copyables support.

Reviewers: hiraditya, bababuck, RKSimon

Pull Request: https://github.com/llvm/llvm-project/pull/209326
DeltaFile
+87-39llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+40-37llvm/test/Transforms/SLPVectorizer/X86/split-node-num-operands.ll
+28-37llvm/test/Transforms/SLPVectorizer/X86/minmax-main-opcode-copyables.ll
+19-24llvm/test/Transforms/SLPVectorizer/X86/debug-info-salvage.ll
+6-10llvm/test/Transforms/SLPVectorizer/X86/minmax-main-opcode-copyables-cost.ll
+2-3llvm/test/Transforms/SLPVectorizer/splat-buildvector.ll
+182-1506 files

LLVM/project cb86f45llvm/lib/Target/AArch64 AArch64TargetTransformInfo.cpp, llvm/lib/Transforms/Vectorize SLPVectorizer.cpp

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+83-3llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+15-0llvm/lib/Transforms/Vectorize/SLPVectorizer/SLPUtils.cpp
+12-0llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
+8-2llvm/test/Transforms/SLPVectorizer/AArch64/masked-div-rem-non-pow2.ll
+6-0llvm/lib/Transforms/Vectorize/SLPVectorizer/SLPUtils.h
+4-1llvm/test/Transforms/SLPVectorizer/AArch64/masked-div-rem-non-pow2-revec.ll
+128-61 files not shown
+130-87 files

LLVM/project dae991allvm/lib/Analysis AliasAnalysis.cpp, llvm/test/Analysis/BasicAA atomics.ll

[AA] Use the cmpxchg merged ordering in getModRefInfo (#210545)

When a cmpxchg's address is NoAlias with the queried location,
getModRefInfo still reports sync effects if the cmpxchg is stronger than
monotonic, since an ordered operation constrains code motion around
locations it never accesses.

But a cmpxchg op has two atomic orderings, and getModRefInfo looked
only at one of them.

Change it so we check the merged ordering, i.e. the stronger of the two.
DeltaFile
+6-2llvm/test/Analysis/BasicAA/atomics.ll
+1-1llvm/lib/Analysis/AliasAnalysis.cpp
+7-32 files

LLVM/project 3281992llvm/lib/Transforms/Vectorize LoopVectorize.cpp LoopVectorizationPlanner.h

[VPlan] Retire LVP::hasTailFolded (NFC). (#210598)

LVP::hasTailFolded incldued an assert that hasTailFOlded matches the
VPlan version. No divergences surfaced, so remove the assert as planned.
DeltaFile
+5-11llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+0-4llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h
+5-152 files

LLVM/project 7db1430lld/ELF Relocations.cpp SyntheticSections.h, lld/test/ELF gnu-ifunc-i386.s ppc32-ifunc-nonpreemptible-pic.s

[ELF] Emit synthetic local in symbol table for non-preemptible IFUNC

Currently we create an internal alias of the original symbol and then
rewrite the latter to point to the IPLT entry, which means we lose
symbol table information for the actual resolver. In practice compilers
also emit a normal function symbol for the resolver due to how IFUNCs
are represented in GNU C so that at least shows up, but we shouldn't be
relying on it. By emitting a synthetic local we can keep having a symbol
for the resolver whilst still redirecting references to the IPLT entry.
DeltaFile
+18-0lld/test/ELF/gnu-ifunc-i386.s
+2-3lld/ELF/Relocations.cpp
+1-2lld/ELF/SyntheticSections.h
+1-1lld/test/ELF/ppc32-ifunc-nonpreemptible-pic.s
+1-1lld/test/ELF/ppc32-ifunc-nonpreemptible-nopic.s
+1-1lld/ELF/SyntheticSections.cpp
+24-86 files

LLVM/project 07906cblld/ELF Relocations.cpp SyntheticSections.cpp, lld/test/ELF gnu-ifunc-i386.s ppc32-ifunc-nonpreemptible-nopic.s

[ELF] Emit synthetic local in symbol table for non-preemptible IFUNC

Currently we create an internal alias of the original symbol and then
rewrite the latter to point to the IPLT entry, which means we lose
symbol table information for the actual resolver. In practice compilers
also emit a normal function symbol for the resolver due to how IFUNCs
are represented in GNU C so that at least shows up, but we shouldn't be
relying on it. By emitting a synthetic local we can keep having a symbol
for the resolver whilst still redirecting references to the IPLT entry.
DeltaFile
+18-0lld/test/ELF/gnu-ifunc-i386.s
+2-3lld/ELF/Relocations.cpp
+1-1lld/ELF/SyntheticSections.cpp
+1-1lld/ELF/SyntheticSections.h
+1-1lld/test/ELF/ppc32-ifunc-nonpreemptible-nopic.s
+1-1lld/test/ELF/ppc32-ifunc-nonpreemptible-pic.s
+24-76 files

LLVM/project 15b393elld/ELF Symbols.h

[NFC][ELF] Remove Symbol's unused copy constructor

Now that we are no longer copying symbols via the copy constructor we
can remove it. Given we track symbol pointers in various data structures
it can be dangerous to have multiple objects for the same symbol that
would risk being viewed inconsistently, or even moved and the original
lost, though no such cases exist upstream that I'm aware of.

Copying a symbol entirely is also a weird thing to do, and can be
inefficient, so when copies are being made it's best to be explicit
about the members to copy. This also makes it clearer to understand what
members are relevant, rather than implicitly copying all the members,
most of which aren't relevant in practice.

Whilst the copy/move constructors/assignment operators are currently
implicitly deleted due to the atomic flags member, explicitly delete
them all so they remain deleted in case that ever changes.
DeltaFile
+11-3lld/ELF/Symbols.h
+11-31 files

LLVM/project 50c55bclld/ELF Relocations.cpp

[NFC][ELF] Create fresh alias in handleNonPreemptibleIfunc

We don't need to copy the full symbol here, we just want an internal
alias to use for the IPLT and IGOTPLT entries and IRELATIVE relocation's
addend.
DeltaFile
+3-1lld/ELF/Relocations.cpp
+3-11 files

LLVM/project e7115f1lld/ELF Relocations.cpp

[NFC][ELF] Only create alias in handleNonPreemptibleIfunc if needed

In the no direct relocations case, the original IFUNC symbol keeps its
value, and so there's no need to create a separate alias; it's only
needed when the original symbol is being redirected to the IPLT as a
normal function symbol.

This change also shifts the isInIplt assignment to be explicit and
mirror the allocateAux/pltIdx uses, rather than relying on makeDefined
copying it, and to be clear that this is in fact deliberately and
consistently being copied like them.
DeltaFile
+23-18lld/ELF/Relocations.cpp
+23-181 files

LLVM/project 27e4ed3lld/ELF Relocations.cpp

[NFC][ELF] Avoid need to copy Symbol in replaceWithDefined

Firstly, by overwriting the symbol, it will have its existing flags, so
there is no need to copy them back; all we need to do is mask out the
other bits on the existing symbol.

Secondly, copying the whole symbol just to preserve the symbol version
that gets cleared by Defined::overwrite is a waste; just copy the single
member to reinstate it.
DeltaFile
+3-4lld/ELF/Relocations.cpp
+3-41 files

LLVM/project 4e1dfc1lld/test/ELF ppc32-ifunc-nonpreemptible-pic.s ppc32-ifunc-nonpreemptible-nopic.s

[NFC][test][ELF] Improve ppc32-ifunc-nonpreemptible-(no)pic.s

Firstly, the nopic test had an unused HEX check line when it should have
been checking .got.plt, and the pic test was only checking .got2, also
ignoring .got.plt.

Secondly, the indentation for instructions was inconsistent within a
single file.

Thirdly, neither test was actually checking the code for func's IPLT
entry in .glink, only that the symbol existed as a normal function that
wasn't the same as the resolver, and the nopic test wasn't even testing
the full contents of the PLT call stub, which was inconsistent with the
pic test.

Fourthly, the pic test used the same output file for two different
links, which can be confusing when debugging.

Finally, the comment at the start of the pic test's PLT call stub had no

    [5 lines not shown]
DeltaFile
+20-9lld/test/ELF/ppc32-ifunc-nonpreemptible-pic.s
+17-6lld/test/ELF/ppc32-ifunc-nonpreemptible-nopic.s
+37-152 files

LLVM/project a9530belld/test/ELF aarch64-ifunc-bti.s

[NFC][test][ELF] Check DSO's ifunc2 is in .iplt in aarch64-ifunc-bti.s

This mirror's the PIE's CHECK lines, which were already stricter.
DeltaFile
+3-1lld/test/ELF/aarch64-ifunc-bti.s
+3-11 files

LLVM/project c45b4e4clang/lib/Driver/ToolChains Hexagon.cpp, clang/test/Driver hexagon-toolchain-linux.c

[Hexagon] Link static PIE executables against rcrt1.o (#210125)

We always selected crt1.o as the CRT start file, regardless of link
mode.

Select rcrt1.o - the self-relocating static-PIE start file when -static
and PIE are active
DeltaFile
+43-0clang/test/Driver/hexagon-toolchain-linux.c
+8-5clang/lib/Driver/ToolChains/Hexagon.cpp
+51-52 files

LLVM/project 2494243.github/workflows test-suite.yml premerge.yaml

Update [Github] Update GHA Dependencies (#194274)

This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
|
[EnricoMi/publish-unit-test-result-action](https://redirect.github.com/EnricoMi/publish-unit-test-result-action)
| action | minor | `v2.23.0` → `v2.24.0` | |
|
[actions/attest-build-provenance](https://redirect.github.com/actions/attest-build-provenance)
| action | patch | `v4.1.0` → `v4.1.1` | |
| [actions/checkout](https://redirect.github.com/actions/checkout) |
action | patch | `v6.0.2` → `v6.0.3` | |
| [actions/checkout](https://redirect.github.com/actions/checkout) |
action | patch | `v6.0.1` → `v6.0.3` | |
|
[actions/create-github-app-token](https://redirect.github.com/actions/create-github-app-token)
| action | minor | `v3.1.1` → `v3.2.0` | |

    [32 lines not shown]
DeltaFile
+6-6.github/workflows/test-suite.yml
+5-5.github/workflows/premerge.yaml
+5-5.github/workflows/libc-overlay-tests.yml
+5-5.github/workflows/libcxx-build-and-test.yaml
+5-5.github/workflows/hlsl-test-all.yaml
+5-5.github/workflows/libc-shared-tests.yml
+31-3149 files not shown
+131-13155 files

LLVM/project dcf03fellvm/include/llvm/ADT Eytzinger.h, llvm/unittests/ADT EytzingerTest.cpp

[ADT] Add begin and end to EytzingerTableSpan and EytzingerTable (NFC) (#210478)

This patch adds iterator and const_iterator type aliases as well as
begin() and end() methods to EytzingerTableSpan and EytzingerTable.

I'm going to be using these as part of the SecNameTable in the
Eytzinger layout.

RFC:
https://discourse.llvm.org/t/rfc-faster-sample-profile-loading/90957/8

Assisted-by: Antigravity
DeltaFile
+47-0llvm/unittests/ADT/EytzingerTest.cpp
+13-0llvm/include/llvm/ADT/Eytzinger.h
+60-02 files

LLVM/project 9f6c84b.github/workflows/containers/libc Dockerfile

[Github] symlink `llvm-tools` in libc container (#210561)

Missed thing in #210414. We need to symlink the LLVM tools that are
under `/usr/lib/llvm-23/bin/` to avoid errors like this because the LLVM
tools have a `-23` suffix when they're installed inside the container

```
# RUN: at line 2
/usr/bin/clang-23   -gline-tables-only   -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta  -DCOMPILER_RT_HAS_FLOAT16 -nobuiltininc -I/__w/llvm-project/llvm-project/compiler-rt/include -idirafter /usr/lib/llvm-23/lib/clang/23/include -resource-dir=/__w/llvm-project/llvm-project/build/compiler-rt -Wl,-rpath,/__w/llvm-project/llvm-project/build/compiler-rt/lib/linux  -fno-builtin -I /__w/llvm-project/llvm-project/compiler-rt/lib/builtins -nodefaultlibs /__w/llvm-project/llvm-project/compiler-rt/test/builtins/Unit/aarch64/emupac.c -lm -Wl,--start-group /__w/llvm-project/llvm-project/build/compiler-rt/lib/linux/libclang_rt.builtins-aarch64.a -lc -Wl,--end-group -o /__w/llvm-project/llvm-project/build/compiler-rt/test/builtins/Unit/AARCH64LinuxConfig/aarch64/Output/emupac.c.tmp
# executed command: /usr/bin/clang-23 -gline-tables-only -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta -DCOMPILER_RT_HAS_FLOAT16 -nobuiltininc -I/__w/llvm-project/llvm-project/compiler-rt/include -idirafter /usr/lib/llvm-23/lib/clang/23/include -resource-dir=/__w/llvm-project/llvm-project/build/compiler-rt -Wl,-rpath,/__w/llvm-project/llvm-project/build/compiler-rt/lib/linux -fno-builtin -I /__w/llvm-project/llvm-project/compiler-rt/lib/builtins -nodefaultlibs /__w/llvm-project/llvm-project/compiler-rt/test/builtins/Unit/aarch64/emupac.c -lm -Wl,--start-group /__w/llvm-project/llvm-project/build/compiler-rt/lib/linux/libclang_rt.builtins-aarch64.a -lc -Wl,--end-group -o /__w/llvm-project/llvm-project/build/compiler-rt/test/builtins/Unit/AARCH64LinuxConfig/aarch64/Output/emupac.c.tmp
# RUN: at line 3
/__w/llvm-project/llvm-project/build/compiler-rt/test/builtins/Unit/AARCH64LinuxConfig/aarch64/Output/emupac.c.tmp 1
# executed command: /__w/llvm-project/llvm-project/build/compiler-rt/test/builtins/Unit/AARCH64LinuxConfig/aarch64/Output/emupac.c.tmp 1
# RUN: at line 4
/__w/llvm-project/llvm-project/build/compiler-rt/test/builtins/Unit/AARCH64LinuxConfig/aarch64/Output/emupac.c.tmp 2
# executed command: /__w/llvm-project/llvm-project/build/compiler-rt/test/builtins/Unit/AARCH64LinuxConfig/aarch64/Output/emupac.c.tmp 2
# RUN: at line 5
not --crash  /__w/llvm-project/llvm-project/build/compiler-rt/test/builtins/Unit/AARCH64LinuxConfig/aarch64/Output/emupac.c.tmp 3
# executed command: not --crash /__w/llvm-project/llvm-project/build/compiler-rt/test/builtins/Unit/AARCH64LinuxConfig/aarch64/Output/emupac.c.tmp 3

    [3 lines not shown]
DeltaFile
+8-4.github/workflows/containers/libc/Dockerfile
+8-41 files

LLVM/project 6375064llvm/test/Transforms/SLPVectorizer/AArch64 masked-div-rem-non-pow2-revec.ll

[SLP][NFC]Add a test with potential masked revec udiv, NFC



Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/210596
DeltaFile
+34-0llvm/test/Transforms/SLPVectorizer/AArch64/masked-div-rem-non-pow2-revec.ll
+34-01 files

LLVM/project ab39c49llvm/lib/Target/X86 X86InstrInfo.cpp X86InstrInfo.h, llvm/test/CodeGen/X86/apx optimize-compare-multipred.ll optimize-compare-multipred.mir

[X86][APX] Reuse EFLAGS across multi-predecessor blocks via NF in optimizeCompareInstr (#208184)

Extend optimizeCompareInstr to reuse EFLAGS produced in predecessor
blocks (including via NF variants) when a compare is redundant, covering
multi-predecessor, dominating, and cyclic CFGs. Share the NF-clobber
removal helper with FlagsCopyLowering, correctly handle swapped and
immediate-adjusted flag reuse, and simplify EFLAGS live-in marking.

Adds MIR tests exercising multi-predecessor reuse over cyclic and
dominating CFGs, including a multi-level idom walk.

Assisted-By: Claude Opus 4.8
DeltaFile
+483-0llvm/test/CodeGen/X86/apx/optimize-compare-multipred.ll
+354-0llvm/test/CodeGen/X86/apx/optimize-compare-multipred.mir
+153-18llvm/lib/Target/X86/X86InstrInfo.cpp
+28-0llvm/lib/Target/X86/X86InstrInfo.h
+10-12llvm/test/CodeGen/X86/apx/add.ll
+1-10llvm/lib/Target/X86/X86FlagsCopyLowering.cpp
+1,029-401 files not shown
+1,030-437 files

LLVM/project 5c7dc8elibcxx/test/libcxx/ranges/range.adaptors/range.enumerate nodiscard.verify.cpp

[libc++][ranges] Add missing test cases for `[[nodiscard]]` tests in `enumerate_view` (#209289)

Addresses missing `[[nodiscard]]` test cases for
`std::views::enumerate`.

---------

Co-authored-by: Hristo Hristov <zingam at outlook.com>
DeltaFile
+16-3libcxx/test/libcxx/ranges/range.adaptors/range.enumerate/nodiscard.verify.cpp
+16-31 files