LLVM/project d4c2285llvm/include/llvm/Support GenericDomTree.h, llvm/lib/Transforms/Vectorize SLPVectorizer.cpp

[DomTree] Assert non-null block for pre-dom tree (#186790)

In a pre-dominator tree, blocks should never be null.
DeltaFile
+6-2llvm/include/llvm/Support/GenericDomTree.h
+1-1polly/lib/Analysis/ScopBuilder.cpp
+2-0llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+9-33 files

LLVM/project 603e204flang/test/Semantics test_errors.py

format
DeltaFile
+1-0flang/test/Semantics/test_errors.py
+1-01 files

LLVM/project e5498d7mlir/include/mlir/Dialect/Linalg Passes.td, mlir/lib/Dialect/Linalg/Transforms FoldIntoElementwise.cpp

[mlir][linalg][elementwise] Fold broadcast into new elementwise (#167626)

Fold broadcast into new elementwise Op which has affine-map attached.
Merging on behalf of @someoneinjd
DeltaFile
+211-7mlir/test/Dialect/Linalg/elementwise/fold.mlir
+31-13mlir/lib/Dialect/Linalg/Transforms/FoldIntoElementwise.cpp
+6-5mlir/include/mlir/Dialect/Linalg/Passes.td
+248-253 files

LLVM/project 0832880flang/test/Semantics test_errors.py

format
DeltaFile
+1-3flang/test/Semantics/test_errors.py
+1-31 files

LLVM/project 0b0f02dllvm/tools/llvm-gpu-loader llvm-gpu-loader.cpp

[libc] Fix llvm-gpu-loader passing uninitialized device memory (#186804)

Summary:
The return value was not zeroed, this was accidentally dropped when we
did the port and it's zero "almost always" so I didn't notice. Hopefully
this makes the test suite no longer flaky.
DeltaFile
+3-0llvm/tools/llvm-gpu-loader/llvm-gpu-loader.cpp
+3-01 files

LLVM/project 466dba8flang/test/Semantics test_errors.py

[flang] Reorder messages wrt line number before diff(actual, expect)

When messages are attached together, the source locations to which they
refer are not necessarily monotonically increasing. For example
```
error: foo.f90:10: There is a problem here         # line 10
because: foo.f90:12: This thing is invalid         # line 12 (attached)
error: foo.f90:11: There is another problem here   # line 11
```
There is no way to represent that in the source flle via ERROR annotations,
so before running unified_diff "canonicalize" the list of messages into an
order that corresponds to the line numbers.
DeltaFile
+49-6flang/test/Semantics/test_errors.py
+49-61 files

LLVM/project 02a2ccbflang/lib/Lower/Support PrivateReductionUtils.cpp, flang/test/Lower/OpenMP/DelayedPrivatization target-private-adjustable-array.f90

[Flang][OpenMP] Provide option to use heap allocation for private adjustable arrays (#186795)

The size of adjustable Fortran arrays is not known at compilation time.
Using limited GPU stack memory may cause hard-to-debug errors. On the
other hand, switching to heap memory allocation may lead to missed
optimization opportunities and significantly increased kernel execution
time.

Adding the option `-mmlir --enable-gpu-heap-alloc` allows the user to
generate valid code for adjustable Fortran arrays. The flag is off by
default, so there is no efficiency penalty for code that does not use
adjustable arrays.
DeltaFile
+81-0flang/test/Lower/OpenMP/DelayedPrivatization/target-private-adjustable-array.f90
+24-7flang/lib/Lower/Support/PrivateReductionUtils.cpp
+105-72 files

LLVM/project e8f97d4llvm/include/llvm/IR IntrinsicsSPIRV.td, llvm/test/CodeGen/SPIRV/pointers getelementptr-vector-index.ll

[SPIR-V] Fix llvm.spv.gep return type for vector-indexed GEPs (#185931)

The `int_spv_gep` intrinsic was defined with `llvm_anyptr_ty` which
forced it to return a scalar pointer. Change the return type to
`llvm_any_ty` to allow the intrinsic to match the actual result type of
the original GEP, whether scalar or vector
DeltaFile
+23-0llvm/test/CodeGen/SPIRV/pointers/getelementptr-vector-index.ll
+1-1llvm/include/llvm/IR/IntrinsicsSPIRV.td
+24-12 files

LLVM/project 202ef22llvm/utils/lit/lit TestRunner.py

[lit] Stop holding subprocess objects open in TimeoutHelper (#186712)

Tweak TestRunner's TimeoutHelper storage to hold only PIDs rather
than the whole process object. Holding the object causes many pipes to
stay open, when all we need is the pid.

Addresses #185941
DeltaFile
+5-3llvm/utils/lit/lit/TestRunner.py
+5-31 files

LLVM/project 8c9c961llvm/include/llvm/IR InlineAsm.h, llvm/lib/CodeGen MachineInstr.cpp

[MIR] Fix printing INLINEASM dialects.
DeltaFile
+5-3llvm/include/llvm/IR/InlineAsm.h
+2-3llvm/test/CodeGen/MIR/Generic/inline-asm-extra-info.mir
+1-1llvm/lib/CodeGen/MachineInstr.cpp
+8-73 files

LLVM/project 77f9793lldb/test/Shell/SymbolFile/NativePDB vbases.test

[lldb][NativePDB] Compile `vbases.test` without default libraries (#186510)

#185735 added the `vbases.test`, which compiles with
`--target=x86_64-windows-msvc`. This will cause the final executable to
be linked to `libcmt.lib`. That doesn't work on ARM, so this PR changes
the command line to link without the default libraries. They're not
needed if we disable `/GS` (buffer security check) like in other tests.

We use `%clang_cl` over `%build` to be able to compile with DWARF as
well.
DeltaFile
+4-4lldb/test/Shell/SymbolFile/NativePDB/vbases.test
+4-41 files

LLVM/project f75369dllvm/lib/Target/AArch64 AArch64ExpandPseudoInsts.cpp

[NFC][LLVM] Fix indentation issue in AArch64ExpandPseudo::expandMI (#186375)
DeltaFile
+243-243llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
+243-2431 files

LLVM/project 50a5462clang/docs ReleaseNotes.rst, clang/lib/CodeGen ItaniumCXXABI.cpp

[CodeGen] Fix C++ global dtor for non-zero program AS targets (#186484)

In codegen for C++ global destructors, we pass a pointer to the
destructor to be called at program exit as the first arg to the
`__cxa_atexit` function.

If the target's default program AS and default AS are not equal, we need
to emit an addrspacecast from the program AS to the generic AS (which is
used as the argument type for the first arg of `__cxa_atexit`) in the
function call.

---------

Signed-off-by: Nick Sarnie <nick.sarnie at intel.com>
DeltaFile
+6-2clang/lib/CodeGen/ItaniumCXXABI.cpp
+7-0clang/test/CodeGenSPIRV/global-dtor.cpp
+1-0clang/docs/ReleaseNotes.rst
+14-23 files

LLVM/project 90fb588clang/docs LifetimeSafety.rst, clang/lib/Sema SemaLifetimeSafety.h

rebase

Created using spr 1.3.7
DeltaFile
+609-0clang/docs/LifetimeSafety.rst
+447-0llvm/test/TableGen/x86-fold-tables.inc
+184-260mlir/lib/Dialect/Linalg/Transforms/Transforms.cpp
+154-169llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
+254-0llvm/test/Transforms/LoopVectorize/VPlan/predicator.ll
+238-0clang/lib/Sema/SemaLifetimeSafety.h
+1,886-429216 files not shown
+6,057-2,384222 files

LLVM/project cd689d9clang/docs LifetimeSafety.rst, clang/lib/Sema SemaLifetimeSafety.h

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+609-0clang/docs/LifetimeSafety.rst
+447-0llvm/test/TableGen/x86-fold-tables.inc
+184-260mlir/lib/Dialect/Linalg/Transforms/Transforms.cpp
+154-169llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
+254-0llvm/test/Transforms/LoopVectorize/VPlan/predicator.ll
+238-0clang/lib/Sema/SemaLifetimeSafety.h
+1,886-429216 files not shown
+6,057-2,384222 files

LLVM/project 11fb271llvm/utils git-llvm-push

[Utils] Modernize type annotations in git-llvm-push

Import annotations from __future__ so we can start using more modern
annotations now rather than once we move to Python 3.10 while still
preserving Python 3.8 compatibility. Also fix a couple typing issues
while here.

Reviewers: ilovepi, petrhosek

Pull Request: https://github.com/llvm/llvm-project/pull/186690
DeltaFile
+20-19llvm/utils/git-llvm-push
+20-191 files

LLVM/project 384e608llvm/include/llvm/IR InstrTypes.h, llvm/lib/IR Instructions.cpp

[IR][NFC] Inline CmpInst::isSigned/isUnsigned (#186791)

These are small helper functions that are called somewhat often, so
inlining is beneficial.

A very minor improvement. Nonetheless, these two functions are
called somewhat regularly and compile to three instructions each,
so it is always beneficial to inline them.
DeltaFile
+0-16llvm/lib/IR/Instructions.cpp
+6-2llvm/include/llvm/IR/InstrTypes.h
+6-182 files

LLVM/project 3088f1fllvm/lib/DebugInfo/DWARF DWARFVerifier.cpp, llvm/test/tools/llvm-dwarfdump/X86 callsite-in-lexical-block.s

[DWARFVerifier] Fix infinite loop in verifyDebugInfoCallSite (#186413)

When attempting to find the callsite for a DwarfDie to see if it was
valid or not, there was a while loop that incorrectly attempted to walk
up the Die parent hierarch. It set `curr` to parent, but then `curr` was
set to same original parent instead of curr.getParent(). This caused
infinite recursion on validation of some kernel binaries by
llvm-dwarfdump where DW_TAG_call_site was nested inside a
DW_TAG_lexical_block (or any non-subprogram, non-inlined_subroutine
tag).


Fix by changing Die.getParent() to Curr.getParent() so the loop
correctly walks up the DIE tree.
Add a new test that validates this scenario. Without this change, that
test hangs rather than succeeding.
DeltaFile
+104-0llvm/test/tools/llvm-dwarfdump/X86/callsite-in-lexical-block.s
+1-1llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
+105-12 files

LLVM/project cd0d7b4llvm/lib/Transforms/Vectorize VPlanConstruction.cpp

[VPlan] Assert CanIV is the first header phi, drop begin (NFC).

Split off as suggested in https://github.com/llvm/llvm-project/pull/156262/.
DeltaFile
+3-3llvm/lib/Transforms/Vectorize/VPlanConstruction.cpp
+3-31 files

LLVM/project 9210e71clang/lib/Analysis/LifetimeSafety LifetimeAnnotations.cpp, clang/test/Sema warn-lifetime-safety-invalidations.cpp

Experimental invalidation annotation
DeltaFile
+29-0clang/lib/Analysis/LifetimeSafety/LifetimeAnnotations.cpp
+21-0clang/test/Sema/warn-lifetime-safety-invalidations.cpp
+50-02 files

LLVM/project 6cc0cb6llvm/lib/Target/AMDGPU/Utils AMDGPUBaseInfo.cpp, llvm/unittests/Target/AMDGPU AMDGPUUnitTests.cpp

AMDGPU: Don't limit VGPR usage based on occupancy in dVGPR mode (#185981)

The maximum VGPR usage of a shader is limited based on the target
occupancy,
ensuring that the targeted number of waves actually fit onto a CU/WGP.

However, in dynamic VGPR mode, we should not do that, because VGPRs are
allocated
dynamically at runtime, and there are no static constraints based on
occupancy.
Fix that in this patch.

Also fixup the getMinNumVGPRs helper to behave consistently by always
returning
zero in dVGPR mode.
This also fixes a problem where AMDGPUAsmPrinter bumps the VGPR usage to
at least
the result of getMinNumVGPRs, per my understanding in order to avoid an
occupancy

    [2 lines not shown]
DeltaFile
+14-2llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
+6-0llvm/unittests/Target/AMDGPU/AMDGPUUnitTests.cpp
+20-22 files

LLVM/project ee90cae.github/workflows libcxx-build-containers.yml

Update docker/login-action action to v4 (#186719)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [docker/login-action](https://redirect.github.com/docker/login-action)
| action | major | `v3.6.0` → `v4.0.0` |
DeltaFile
+1-1.github/workflows/libcxx-build-containers.yml
+1-11 files

LLVM/project 221d2f5llvm/lib/Target/AArch64 AArch64SVEInstrInfo.td, llvm/test/CodeGen/AArch64 sve2p3-dots-partial-reduction.ll

[AArch64] Add partial reduce patterns for new sve dot variants (#184649)

This patch enables generation of new dot instruction added in 2025 arm
extension from partial reduce nodes.
DeltaFile
+52-0llvm/test/CodeGen/AArch64/sve2p3-dots-partial-reduction.ll
+5-0llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
+57-02 files

LLVM/project 6b3cf50llvm/include/llvm/IR PatternMatch.h, llvm/lib/IR PatternMatch.cpp CMakeLists.txt

[IR][NFC] Hot-cold splitting in PatternMatch (#186777)

ConstantAggregates are rare, therefore split that check into a separate
function so that the fast path can be inlined.

Likewise for vectors, which occur much less frequently than scalar
values.
DeltaFile
+41-62llvm/include/llvm/IR/PatternMatch.h
+53-0llvm/lib/IR/PatternMatch.cpp
+1-0llvm/lib/IR/CMakeLists.txt
+95-623 files

LLVM/project 2708ff0llvm/include/llvm/IR InlineAsm.h, llvm/lib/CodeGen MachineInstr.cpp

[MIR][NFC] Fix printing INLINEASM dialects.
DeltaFile
+5-3llvm/include/llvm/IR/InlineAsm.h
+2-3llvm/test/CodeGen/MIR/Generic/inline-asm-extra-info.mir
+1-1llvm/lib/CodeGen/MachineInstr.cpp
+8-73 files

LLVM/project 9ea0842clang/include/clang/StaticAnalyzer/Core/PathSensitive ExprEngine.h, clang/lib/StaticAnalyzer/Core ExprEngineCallAndReturn.cpp

[NFC][analyzer] Refactor ExprEngine::processCallExit (#186182)

This commit converts `ExprEngine::processCallExit` to the new paradigm
introduced in 1c424bfb03d6dd4b994a0d549e1f3e23852f1e16 where the current
`LocationContext` and `Block` is populated near the beginning of the
`dispatchWorkItem` call (= elementary analysis step) and remains
available during the whole step.

Unfortunately the first half of the `CallExit` procedure (`removeDead`)
happens within the callee context, while the second half (`PostCall` and
similar callbacks) happen in the caller context -- so I need to change
the current `LocationContext` and `Block` at the middle of this big
method.

This means that I need to discard my invariant that
`setCurrLocationContextAndBlock` is only called once per each
`dispatchWorkItem`; but I think this exceptional case (first half in
callee, second half in caller) is still clear enough.

In addition to this main goal, I perform many small changes to clarify
and modernize the code of this old method.
DeltaFile
+69-72clang/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp
+8-3clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
+77-752 files

LLVM/project 45fe4bbllvm/include/llvm/ADT Repeated.h, llvm/unittests/ADT RepeatedTest.cpp CMakeLists.txt

[ADT] Add `Repeated<T>` for memory-efficient repeated-value ranges (#186721)

Introduce a lightweight range representing N copies of the same value
without materializing a dynamic array. The range owns this value.

I plan to use it with MLIR APIs that often end up requiring N copies of
the same thing. Currently, we use `SmallVector<T>(N, Val)` for these,
which is wasteful.

---------

Co-authored-by: Claude Opus 4.6 <noreply at anthropic.com>
DeltaFile
+120-0llvm/include/llvm/ADT/Repeated.h
+100-0llvm/unittests/ADT/RepeatedTest.cpp
+1-0llvm/unittests/ADT/CMakeLists.txt
+221-03 files

LLVM/project e7b960fllvm/lib/Target/AArch64 AArch64ISelLowering.cpp, llvm/test/CodeGen/AArch64 sve-asrd.ll sve-fixed-length-no-vscale-range.ll

[LLVM][CodeGen][SVE] insert_subvector(undef, splat(C), 0) -> splat(C). (#186090)

When converting a fixed-length constant splats to scalable vector we can
instead regenerate the splat using the target type.
DeltaFile
+5-10llvm/test/CodeGen/AArch64/sve-asrd.ll
+9-4llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+11-0llvm/test/CodeGen/AArch64/sve-fixed-length-no-vscale-range.ll
+2-2llvm/test/CodeGen/AArch64/sve-partial-reduce-dot-product.ll
+1-3llvm/test/CodeGen/AArch64/imm-splat-ops.ll
+1-1llvm/test/CodeGen/AArch64/vecreduce-add.ll
+29-206 files

LLVM/project 482e137clang/docs LifetimeSafety.rst index.rst

[LifetimeSafety] Add user documentation (#183058)
DeltaFile
+609-0clang/docs/LifetimeSafety.rst
+1-0clang/docs/index.rst
+610-02 files

LLVM/project 8abce0a.github/workflows libc-fullbuild-tests.yml

[libc][Github] Bump libc-fullbuild-tests.yml to clang 23 (#186699)

Do this now that it is available in the container.
DeltaFile
+22-22.github/workflows/libc-fullbuild-tests.yml
+22-221 files