LLVM/project 2866d23llvm/docs LangRef.rst, llvm/include/llvm/IR IntrinsicsAArch64.td

[AArch64][Bitcode] Use target memory for SME state (#205829)

Model AArch64 ZA and ZT0 intrinsic state using target_mem instead of
inaccessiblemem.

Bump the bitcode memory-attribute encoding and upgrade old AArch64
bitcode so prior inaccessiblemem effects are preserved on the new target
memory locations. Non-AArch64 bitcode keeps the old interpretation.
DeltaFile
+52-0llvm/test/Transforms/LICM/AArch64/sme-fp8-hoist.ll
+35-5llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+35-0llvm/test/Bitcode/target-memory-attribute.ll
+3-2llvm/docs/LangRef.rst
+2-2llvm/include/llvm/IR/IntrinsicsAArch64.td
+1-1llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
+128-102 files not shown
+128-108 files

LLVM/project 604b4eellvm/include/llvm/CodeGen UnreachableBlockElim.h RenameIndependentSubregs.h, llvm/include/llvm/Transforms/Scalar StructurizeCFG.h

[NPM] Make few more passes Required
DeltaFile
+4-4llvm/lib/Target/AMDGPU/AMDGPU.h
+2-2llvm/include/llvm/CodeGen/UnreachableBlockElim.h
+1-1llvm/include/llvm/CodeGen/RenameIndependentSubregs.h
+1-1llvm/include/llvm/CodeGen/TwoAddressInstructionPass.h
+1-1llvm/include/llvm/CodeGen/RegisterCoalescerPass.h
+1-1llvm/include/llvm/Transforms/Scalar/StructurizeCFG.h
+10-1014 files not shown
+24-2420 files

LLVM/project 276b1e9llvm/test/Transforms/OpenMP spmdization_guarding.ll spmdization_guarding_two_reaching_kernels.ll

fix nvptx tests
DeltaFile
+1-1llvm/test/Transforms/OpenMP/spmdization_guarding.ll
+1-1llvm/test/Transforms/OpenMP/spmdization_guarding_two_reaching_kernels.ll
+1-1llvm/test/Transforms/OpenMP/spmdization_no_guarding_two_reaching_kernels.ll
+3-33 files

LLVM/project bf74249clang/test/CodeGenCoroutines coro-elide.cpp coro-halo.cpp

[Clang] Require X86 backend for some coroutine tests (#207681)

The wrapper functions are generated without target features.
They can still be inlined based on target-specific logic, but this
requires the target to be available.

We should fix this by properly generating the target features,
but for now add a REQUIRES to unbreak the tests.
DeltaFile
+3-0clang/test/CodeGenCoroutines/coro-elide.cpp
+3-0clang/test/CodeGenCoroutines/coro-halo.cpp
+3-0clang/test/CodeGenCoroutines/pr65018.cpp
+9-03 files

LLVM/project 0c38875lldb/source/Target StopInfo.cpp Process.cpp, lldb/test/API/functionalities/fork/stop TestStopOnForkAndVFork.py main.c

[lldb] Revert stop-on-fork and stop-on-vfork (#207663)

This was causing failures on green dragon
DeltaFile
+0-72lldb/test/API/functionalities/fork/stop/TestStopOnForkAndVFork.py
+0-18lldb/test/API/functionalities/fork/stop/main.c
+6-8lldb/source/Target/StopInfo.cpp
+0-12lldb/source/Target/Process.cpp
+0-11lldb/test/Shell/Subprocess/stop-on-vfork.test
+0-11lldb/test/Shell/Subprocess/stop-on-fork.test
+6-1323 files not shown
+6-1459 files

LLVM/project 47acb0cllvm/include/llvm/Analysis ModuleSummaryAnalysis.h

provide default nullptr to Index
DeltaFile
+1-1llvm/include/llvm/Analysis/ModuleSummaryAnalysis.h
+1-11 files

LLVM/project d93dfabllvm/docs NVPTXUsage.rst, llvm/include/llvm/IR IntrinsicsNVVM.td

[NVPTX] Add missing Range attr to tensormap.replace intrinsics. (#207099)

Add missing `Range=[0, 5)` for `%ord imm` operand in
`nvvm.tensormap.replace` intrinsics.
DeltaFile
+26-0llvm/test/Verifier/NVPTX/tensormap-replace.ll
+4-4llvm/docs/NVPTXUsage.rst
+1-1llvm/include/llvm/IR/IntrinsicsNVVM.td
+31-53 files

LLVM/project 61679c3libc/include/llvm-libc-macros/linux sys-socket-macros.h

[libc] Add protocol family constants (#206911)

These aren't in POSIX, but are in 4.2BSD and they're still widely used.
DeltaFile
+7-0libc/include/llvm-libc-macros/linux/sys-socket-macros.h
+7-01 files

LLVM/project d180df7llvm/lib/Target/SPIRV SPIRVLegalizerInfo.cpp, llvm/test/CodeGen/SPIRV/llvm-intrinsics fixed-point-math-i64.ll

[SPIR-V] Support i64 smul.fix/umul.fix via SPV_ALTERA_arbitrary_precision_integers (#207405)
DeltaFile
+38-4llvm/test/CodeGen/SPIRV/llvm-intrinsics/fixed-point-math-i64.ll
+9-7llvm/lib/Target/SPIRV/SPIRVLegalizerInfo.cpp
+47-112 files

LLVM/project e9e3721llvm/test/CodeGen/AArch64/GlobalISel combine-max-min.ll

[AArch64] Remove duplicate combine-max-min.ll test. NFC (#207679)
DeltaFile
+0-87llvm/test/CodeGen/AArch64/GlobalISel/combine-max-min.ll
+0-871 files

LLVM/project 4341c0cmlir/lib/Dialect/MemRef/IR ValueBoundsOpInterfaceImpl.cpp MemRefDialect.cpp, mlir/test/Dialect/MemRef value-bounds-op-interface-impl.mlir

[mlir][memref] Implement ValueBoundsOpInterface for memref.extract_strided_metadata/assume_alignment (#206466)

Add ValueBoundsOpInterface external models for memref.assume_alignment
and memref.extract_strided_metadata, so dimension and metadata bounds
can be propagated through these view-like ops during value-bounds
analysis.
DeltaFile
+54-0mlir/lib/Dialect/MemRef/IR/ValueBoundsOpInterfaceImpl.cpp
+39-0mlir/test/Dialect/MemRef/value-bounds-op-interface-impl.mlir
+3-2mlir/lib/Dialect/MemRef/IR/MemRefDialect.cpp
+96-23 files

LLVM/project 46aa983clang/docs/analyzer checkers.rst

[clang][analyzer] Add documentation for unix modeling checker options (NFC) (#207225)
DeltaFile
+26-0clang/docs/analyzer/checkers.rst
+26-01 files

LLVM/project c5ca492llvm/lib/Target/AArch64 AArch64ISelLowering.cpp, llvm/test/CodeGen/AArch64 neg-smin-zero.ll

[AArch64] Fold -smin/-smax(X,0) to neg + masked AND

smin(X, 0) lowers to X & M and smax(X, 0) to X & ~M, where M is X
arithmetically shifted right by the bit width minus one (a 0 or -1 sign
mask). When negation is applied, -(X & M) is equivalent to (-X) & M. The
latter form is slightly better because the shift no longer depends on the
negation and the two can issue in parallel. Instruction count is unchanged.

The fold is suppressed when the result feeds a comparison because then the
negation is folded into a cmn for free. This covers the compare feeding a
SETCC, SELECT_CC, or BR_CC.

smin: https://alive2.llvm.org/ce/z/SfmPfH
smax: https://alive2.llvm.org/ce/z/_lVM0r

Assisted-by: Opus 4.8
DeltaFile
+45-10llvm/test/CodeGen/AArch64/neg-smin-zero.ll
+49-0llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+94-102 files

LLVM/project cb942d0libcxxabi/src CMakeLists.txt

[libc++abi] Always enable -fvisibility=hidden (#207333)

Building with `-fvisibility=hidden` is generally a good idea, since it
avoids unnecessary relocations when loading a dylib. For libc++abi this
should be a no-op, since most things are annotated explicitly. By
enabling `-fvisibility=hidden` we can remove these explicit annotations
however.
DeltaFile
+2-1libcxxabi/src/CMakeLists.txt
+2-11 files

LLVM/project acafa25llvm/lib/Target/LoongArch LoongArchISelLowering.cpp LoongArchLASXInstrInfo.td, llvm/test/CodeGen/LoongArch/lasx/ir-instruction uitofp.ll sitofp.ll

[LoongArch] Remove inaccurate LASX conversion pattern and use [X]VFFINT.S.L instead (#207107)

Original LASX signed/unsigned 64-bit integer & floating point will
suffer from double rounding issue, due to it implements such logic: `i64
-> double -> float` that will lead to precision loss. So delete it and
introduce the `[X]VFFINT.S.L` instruction, which could convert 4 or 8
signed 64-bit integer into float in one instrunction.

Also, create the `MergeBlocksConvert` helper function to reuse the logic
about merge two blocks into one, avoid unnecessary code size bloat.
DeltaFile
+88-44llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
+32-2llvm/test/CodeGen/LoongArch/lsx/ir-instruction/sitofp.ll
+15-7llvm/test/CodeGen/LoongArch/lasx/ir-instruction/uitofp.ll
+4-8llvm/lib/Target/LoongArch/LoongArchLASXInstrInfo.td
+9-0llvm/lib/Target/LoongArch/LoongArchLSXInstrInfo.td
+2-3llvm/test/CodeGen/LoongArch/lasx/ir-instruction/sitofp.ll
+150-646 files

LLVM/project 1b2efd2libcxx/include module.modulemap.in CMakeLists.txt, libcxx/include/__memory uninitialized_multidimensional_algorithms.h uninitialized_algorithms.h

[libc++] Split the multidimensional algorithms out of uninitialized_algorithms.h (#207447)

While these algorithms are conceptually related to other
`uninitialized_*` algorithms, they're likely only ever going to be used
by `shared_ptr`. `uninitialized_algorithms.h` itself is also getting
rather large, so it makes sense to split the multidimensional versions
into their own header.

Fixes #207417
DeltaFile
+194-0libcxx/include/__memory/uninitialized_multidimensional_algorithms.h
+1-158libcxx/include/__memory/uninitialized_algorithms.h
+3-0libcxx/include/module.modulemap.in
+1-0libcxx/include/__memory/shared_ptr.h
+1-0libcxx/include/CMakeLists.txt
+200-1585 files

LLVM/project 7bdca28llvm/docs ReleaseNotes.md, llvm/lib/Analysis InlineCost.cpp

[InlineCost] Never inline functions with incompatible target features (#205113)

If inlining is unsound due to incompatible target feature attributes, we
should not inline the call even if alwaysinline is set. This will likely
result in a crash during instruction selection.

We tried this previously in
https://github.com/llvm/llvm-project/commit/d6f994acb3d545b80161e24ab742c9c69d4bbf33,
but the change had to be reverted because the quality of our
areInlineCompatible() hooks was very bad at the time, which resulted in
inlining not happening in many cases where it was safe.

I think we're in a much better position now. Most notably, we now have a
default areInlineCompatible() implementation that actually does
something sensible (https://github.com/llvm/llvm-project/pull/117493),
inlining compatibility for target features is now specified in TableGen
(https://github.com/llvm/llvm-project/pull/205348). Various
target-specific issues have been fixed as well, e.g. ARM's overly strict
feature whitelist (https://github.com/llvm/llvm-project/pull/205763) and
X86's overly conservative ABI compatibility checks
(https://github.com/llvm/llvm-project/pull/205106).
DeltaFile
+32-0llvm/test/Transforms/Inline/X86/always-inline-features.ll
+10-6llvm/lib/Analysis/InlineCost.cpp
+3-0llvm/docs/ReleaseNotes.md
+45-63 files

LLVM/project c82be6ellvm/include/llvm/Analysis DependenceAnalysis.h, llvm/lib/Analysis DependenceAnalysis.cpp

[DA] Rewrite BanerjeeMIV test with safe APInt interval arithmetic

The old banerjeeMIVtest computed inequality bounds using SCEV
arithmetic on 64-bit integers. Intermediate operations like
$(A^{-} - B^{+}) \times Iterations$ could overflow i64 even when all individual
coefficients and loop bounds fit, producing unsound results.

Replace the symbolic bound machinery with a self-contained APInt
interval arithmetic implementation. Key design decisions:

- BanerjeeInterval holds [Lower, Upper] signed-inclusive bounds.
  Operations use APInt arithmetic at WideBits, chosen to guarantee no
  intermediate overflow:
  $$
    WideBits = max(8, 2 \times BaseBits + MaxLevels + 8)
  $$
  This is provably sufficient, each term product needs at most `2 \times BaseBits + 1`
  bits, and summing across MaxLevels terms needs at most ceil($\log_2 (MaxLevels)$)
  extra bits.

    [15 lines not shown]
DeltaFile
+384-466llvm/lib/Analysis/DependenceAnalysis.cpp
+0-73llvm/include/llvm/Analysis/DependenceAnalysis.h
+55-0llvm/test/Analysis/DependenceAnalysis/banerjee-overflow.ll
+2-4llvm/test/Analysis/DependenceAnalysis/gcd-miv-overflow.ll
+1-1llvm/test/Analysis/DependenceAnalysis/PR51512.ll
+442-5445 files

LLVM/project ae3d310clang-tools-extra/clangd SemanticHighlighting.cpp, clang-tools-extra/clangd/unittests SemanticHighlightingTests.cpp

[clangd] Null-check AutoTypeLoc in CollectExtraHighlightings::VisitDeclaratorDecl (#207323)

A Decl's getType() can have a getContainedAutoType() without
its TypeSourceInfo's type having one, because the two types
can differ in type sugar such as DecltypeType which
getContainedAutoType[Loc]() deliberately does not look through.

Fixes https://github.com/llvm/llvm-project/issues/207139
DeltaFile
+8-3clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
+4-2clang-tools-extra/clangd/SemanticHighlighting.cpp
+12-52 files

LLVM/project 8cc99f7llvm/include/llvm/Analysis DependenceAnalysis.h, llvm/lib/Analysis DependenceAnalysis.cpp

[DA] Rewrite BanerjeeMIV test with safe APInt interval arithmetic

The old banerjeeMIVtest computed inequality bounds using SCEV
arithmetic on 64-bit integers. Intermediate operations like
$(A^{-} - B^{+}) \times Iterations$ could overflow i64 even when all individual
coefficients and loop bounds fit, producing unsound results.

Replace the symbolic bound machinery with a self-contained APInt
interval arithmetic implementation. Key design decisions:

- BanerjeeInterval holds [Lower, Upper] signed-inclusive bounds.
  Operations use APInt arithmetic at WideBits, chosen to guarantee no
  intermediate overflow:
  $$
    WideBits = max(8, 2 \times BaseBits + MaxLevels + 8)
  $$
  This is provably sufficient, each term product needs at most `2 \times BaseBits + 1`
  bits, and summing across MaxLevels terms needs at most ceil($\log_2 (MaxLevels)$)
  extra bits.

    [15 lines not shown]
DeltaFile
+381-466llvm/lib/Analysis/DependenceAnalysis.cpp
+0-73llvm/include/llvm/Analysis/DependenceAnalysis.h
+55-0llvm/test/Analysis/DependenceAnalysis/banerjee-overflow.ll
+2-4llvm/test/Analysis/DependenceAnalysis/gcd-miv-overflow.ll
+1-1llvm/test/Analysis/DependenceAnalysis/PR51512.ll
+439-5445 files

LLVM/project f44ec21clang/lib/AST/ByteCode Interp.h Interp.cpp

[clang][bytecode][NFC] Move float->ap cast ops to the source file (#207592)

And deduplicate the code.
DeltaFile
+4-44clang/lib/AST/ByteCode/Interp.h
+33-0clang/lib/AST/ByteCode/Interp.cpp
+37-442 files

LLVM/project a280b1bclang/include/clang/Basic DiagnosticDriverKinds.td, clang/include/clang/Options Options.td

[Hexagon] Allow reservation of caller saved registers via -ffixed-rXX (#205733)

Previously, hexagon allowed only callee saved registers to be reserved
since reserving caller saved regs can create problems, since it cannot
be sure that the callee (from a different module) also reserves the
register.

The responsibility of reserving register and managing it is now on the
user. However, a warning will be displayed if the user tries to reserve a
caller saved register.

---------

Co-authored-by: quic-santdas <quic_santdas at qti.qualcomm.com>
DeltaFile
+49-2clang/test/Driver/hexagon-toolchain-elf.c
+32-16clang/lib/Driver/ToolChains/Hexagon.cpp
+7-4clang/include/clang/Options/Options.td
+6-0llvm/test/CodeGen/Hexagon/reserved-regs.ll
+5-0clang/include/clang/Basic/DiagnosticDriverKinds.td
+2-0llvm/lib/Target/Hexagon/HexagonRegisterInfo.cpp
+101-221 files not shown
+102-237 files

LLVM/project 0ac6b4bclang/lib/AST/ByteCode Compiler.cpp

[clang][bytecode][NFC] Remove unnecessary loop variable (#207649)

No reason to have the extra `N`.
DeltaFile
+1-1clang/lib/AST/ByteCode/Compiler.cpp
+1-11 files

LLVM/project aae9f9eclang/lib/AST/ByteCode Compiler.cpp Compiler.h

[clang][bytecode][NFC] Move Scope classes to source file (#207647)
DeltaFile
+234-0clang/lib/AST/ByteCode/Compiler.cpp
+0-234clang/lib/AST/ByteCode/Compiler.h
+234-2342 files

LLVM/project a929f64llvm/lib/Target/AMDGPU AMDGPUAsmPrinter.cpp AMDGPUAsmPrinter.h, llvm/test/CodeGen/AMDGPU llc-pipeline-npm.ll

[AMDGPU][NPM] Complete AsmPrinter support (#203509)
DeltaFile
+45-4llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
+22-0llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.h
+15-3llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
+10-1llvm/test/CodeGen/AMDGPU/llc-pipeline-npm.ll
+92-84 files

LLVM/project 467390ellvm/lib/Transforms/InstCombine InstCombineSimplifyDemanded.cpp, llvm/test/Transforms/InstCombine vec_demanded_elts.ll

[InstCombine] Skip redundant demanded element queries in insert chains (#205948)

Avoid re-running `SimplifyDemandedVectorElts` on intermediate
`insertelement` chain nodes when a bounded scan proves the top-level
all-lanes query cannot change the IR.

The skip is implemented inside the `InsertElement` case of
`SimplifyDemandedVectorElts` and is limited to the top-level all-lanes
query (`Depth == 0 && DemandedElts.isAllOnes()`). The bounded scan
matches the existing SDVE depth window and only skips chains with
distinct in-range constant insert indices. This keeps the normal SDVE
path for duplicate indices, variable indices, out-of-range indices,
multi-use chains, and the final chain root.

This was motivated by a cutile matmul compile-time case where loop
unrolling produced 128-lane vector insert/extract chains. Before this
change, InstCombine repeatedly invoked SDVE on intermediate
`insertelement` nodes in those chains. On the representative IR, the
affected InstCombine pass time went from about `44.9 ms` to `29.8 ms`,

    [4 lines not shown]
DeltaFile
+94-0llvm/test/Transforms/InstCombine/vec_demanded_elts.ll
+60-0llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
+154-02 files

LLVM/project 45574a5llvm/lib/Target/RISCV RISCVSubtarget.cpp, llvm/test/Analysis/CostModel/RISCV fixed-vector-scatter.ll fixed-vector-gather.ll

[RISCV] Remove -riscv-v-fixed-length-vector-lmul-max option (#207312)

Whilst reviewing https://github.com/llvm/llvm-project/pull/207254, I
threw claude at it and it found a crash when passing in a non-default
-riscv-v-fixed-length-vector-lmul-max flag.

This option was added 5 years ago around the time initial fixed vector
support was being added in a719b667a9794, and IIUC it was added so that
support for more LMULs could be added over time.

We don't have any substantial codegen testing for it and I couldn't find
any downstream users either. So rather than trying to fix
https://github.com/llvm/llvm-project/pull/207254 to handle it it seems
easier just to remove it now that fixed vector support for RVV has
matured.
DeltaFile
+93-37llvm/test/CodeGen/RISCV/rvv/fixed-vectors-lmul-max.ll
+24-24llvm/test/Analysis/CostModel/RISCV/fixed-vector-scatter.ll
+24-24llvm/test/Analysis/CostModel/RISCV/fixed-vector-gather.ll
+24-23llvm/test/CodeGen/RISCV/rvv/pr52475.ll
+6-6llvm/test/Analysis/CostModel/RISCV/rvv-select.ll
+1-10llvm/lib/Target/RISCV/RISCVSubtarget.cpp
+172-1241 files not shown
+173-1257 files

LLVM/project 4eb56cfllvm/lib/Analysis InstructionSimplify.cpp, llvm/test/Transforms/GVN/PRE pre-load-through-select.ll

[InstSimplify] Fold value-preserving zext/sext of trunc (#204089)

Fold a value-preserving `zext (trunc nuw X)` / `sext (trunc nsw X)` back
to
`X` in `simplifyCastInst` (when the trunc source type equals the extend
result type and the no-wrap flag guarantees the round-trip is identity).

After indvars canonicalizes a min-index loop, the running-index select
has a
`trunc nuw nsw i64 %iv to i32` on its true side while `arr[i]` is
addressed
directly with the i64 `%iv`. When PHI-translating the select-dependent
address along the backedge (see #203863), the true side becomes
`gep base, zext nneg (trunc nuw %iv)`, which has no matching instruction
in
the loop, so the select dependency is never formed and the redundant
load
survives.


    [11 lines not shown]
DeltaFile
+72-0llvm/test/Transforms/GVN/PRE/pre-load-through-select.ll
+66-0llvm/test/Transforms/InstSimplify/cast.ll
+11-0llvm/lib/Analysis/InstructionSimplify.cpp
+149-03 files

LLVM/project 4d7b4fd.github/workflows test-suite.yml

[GitHub] Build llvm-size for test-suite.yml workflow (#207642)

This is also needed by llvm-test-suite
DeltaFile
+1-1.github/workflows/test-suite.yml
+1-11 files

LLVM/project d5288e7llvm/lib/Target/BPF BPFCodeGenPassBuilder.cpp BPFTargetMachine.cpp

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+123-0llvm/lib/Target/BPF/BPFCodeGenPassBuilder.cpp
+2-38llvm/lib/Target/BPF/BPFTargetMachine.cpp
+7-0llvm/lib/Target/BPF/BPF.h
+6-0llvm/lib/Target/BPF/BPFTargetMachine.h
+6-0llvm/lib/Target/BPF/BPFPassRegistry.def
+3-0llvm/lib/Target/BPF/BPFISelDAGToDAG.cpp
+147-381 files not shown
+150-387 files