LLVM/project 96ab8ab — llvm/lib/Target/Sparc SparcFrameLowering.h SparcFrameLowering.cpp, llvm/test/DebugInfo/Sparc leaf-epilogue-loc.ll

[SPARC] Give the leaf epilogue's stack adjustment a debug location (#235247)

The stack adjustment in a leaf function's epilogue was built with an
empty DebugLoc, so it inherits the line of whatever precedes it and the
row for the return's line starts after it. A breakpoint on that line
then stops with the frame already released, and %sp-based variable
locations read the wrong slots.

Use the return's location, as the non-leaf restore already does.

The delay slot filler currently hides this by moving the adjustment
into the delay slot of the retl; it shows once that slot is not filled,
see #235235.

Assisted-by: Claude Code (Claude Opus 5.5)
DeltaFile
+33-0llvm/test/DebugInfo/Sparc/leaf-epilogue-loc.ll
+4-5llvm/lib/Target/Sparc/SparcFrameLowering.cpp
+2-4llvm/lib/Target/Sparc/SparcFrameLowering.h
+39-93 files

LLVM/project eabed9f — libc/src/__support/math fminimumf80.h fmaximumf80.h, libc/src/math/generic fminimumf80.cpp fmaximumf80.cpp

initial commit
DeltaFile
+38-0utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+33-0libc/src/__support/math/fminimumf80.h
+33-0libc/src/__support/math/fmaximumf80.h
+30-0libc/test/src/math/smoke/CMakeLists.txt
+30-0libc/src/math/generic/fminimumf80.cpp
+30-0libc/src/math/generic/fmaximumf80.cpp
+194-028 files not shown
+446-034 files

LLVM/project 260f2eb — utils/bazel/llvm-project-overlay/mlir/unittests BUILD.bazel

[Bazel] Fixes fd01599 (#236391)

This fixes fd01599cb9ef4d9a40d89c642c337ca6ba8a8e82 (#231423).

Buildkite error link:
https://buildkite.com/llvm-project/upstream-bazel/builds?commit=fd01599cb9ef4d9a40d89c642c337ca6ba8a8e82

Co-authored-by: Google Bazel Bot <google-bazel-bot at google.com>
DeltaFile
+1-0utils/bazel/llvm-project-overlay/mlir/unittests/BUILD.bazel
+1-01 files

LLVM/project 3e414a4 — llvm/lib/Target/AMDGPU AMDGPULegalizerInfo.cpp, llvm/test/CodeGen/AMDGPU/GlobalISel legalize-fpowi.mir llvm.powi.ll

[AMDGPU][GlobalISel] Scalarize vector G_FPOWI before legalizing (#224194)

Mirror SDAG approach on lowering fpowi
DeltaFile
+190-0llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.powi.ll
+165-0llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fpowi.mir
+4-1llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+359-13 files

LLVM/project 0ab2332 — libc/config/baremetal/hexagon entrypoints.txt

update for hexagon port
DeltaFile
+4-0libc/config/baremetal/hexagon/entrypoints.txt
+4-01 files

LLVM/project fd01599 — mlir/include/mlir/Interfaces SideEffectInterfaces.h, mlir/lib/Interfaces SideEffectInterfaces.cpp

[mlir] Optimize `isOpTriviallyDead` greedy rewriter checks for deeply nested IR (#231423)

See the discussion
https://github.com/llvm/llvm-project/pull/230961#issuecomment-6130021318

Driver checks `isOpTriviallyDead` after each IR modifications and
`isOpTriviallyDead` walked the entire nested chain for
`HasRecursiveMemoryEffects`.

Cache op deadness in driver and invalidate on IR change.

Also, `Operation *dumpRootOp = getDumpRootOp(op);` only needed for debug
printing was called unconditionally and was also noticeable in profiler.
Call it only if debug printing is actually enabled.

Added synthetic 1000-nested IR test, generated by python. Test doesn't
actually check execution times, but I hope someone will notice if it
suddenly start to take 30s.


    [9 lines not shown]
DeltaFile
+265-0mlir/unittests/Transforms/GreedyPatternRewriteDriver.cpp
+118-58mlir/lib/Interfaces/SideEffectInterfaces.cpp
+70-14mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp
+28-0mlir/test/Transforms/canonicalize-deeply-nested.py
+23-0mlir/include/mlir/Interfaces/SideEffectInterfaces.h
+4-0mlir/unittests/Transforms/CMakeLists.txt
+508-726 files

LLVM/project 8c270e9 — llvm/lib/Target/AMDGPU GCNRegPressure.cpp GCNRegPressure.h

[AMDGPU] Rename the max() of GCNRegPressure to maxPerRegFile()

The function no longer takes the maximum of each component: it takes the VGPR and AVGPR counts from the same operand. A plain max() name suggests a component-wise maximum, so the new name states that the result is the maximum per register file.

The function now computes each component once, in one loop over Value.
DeltaFile
+22-12llvm/lib/Target/AMDGPU/GCNRegPressure.h
+6-5llvm/lib/Target/AMDGPU/GCNRegPressure.cpp
+28-172 files

LLVM/project 463f320 — libc/src/math fminf80.h fmaxf80.h, libc/src/math/generic fminf80.cpp fmaxf80.cpp

nits
DeltaFile
+0-1libc/test/src/math/smoke/fminf80_test.cpp
+0-1libc/test/src/math/smoke/fmaxf80_test.cpp
+0-1libc/src/math/generic/fminf80.cpp
+0-1libc/src/math/generic/fmaxf80.cpp
+0-1libc/src/math/fminf80.h
+0-1libc/src/math/fmaxf80.h
+0-64 files not shown
+0-1010 files

LLVM/project e311055 — libc/src/__support/math fmaxf80.h fminf80.h, libc/src/math/generic fminf80.cpp fmaxf80.cpp

initial commit
DeltaFile
+38-0utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+34-0libc/src/__support/math/fmaxf80.h
+34-0libc/src/__support/math/fminf80.h
+31-0libc/src/math/generic/fminf80.cpp
+31-0libc/src/math/generic/fmaxf80.cpp
+30-0libc/test/src/math/smoke/CMakeLists.txt
+198-027 files not shown
+453-033 files

LLVM/project b03a708 — flang/lib/Evaluate real-value-impl.cpp, flang/unittests/Evaluate RealValueTest.cpp

[flang] Undefine HUGE after including cmath (#236221)

Older glibc versions expose HUGE through <cmath> after Flang's headers
have undefined it. This breaks the RealValueImpl::HUGE definition and
calls, as well as the RealValue unit tests and their HUGE test name.

The glibc version I could reproduce the issue on was 2.26.
DeltaFile
+4-0flang/unittests/Evaluate/RealValueTest.cpp
+4-0flang/lib/Evaluate/real-value-impl.cpp
+8-02 files

LLVM/project 2fbd46e — libc/src/__support/OSUtil/linux/syscall_wrappers CMakeLists.txt epoll_pwait.h, libc/src/sys/epoll/linux CMakeLists.txt epoll_pwait.cpp

[libc] Use a syscall wrapper for epoll_pwait
DeltaFile
+40-0libc/src/__support/OSUtil/linux/syscall_wrappers/epoll_pwait.h
+19-3utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+7-14libc/src/sys/epoll/linux/epoll_pwait.cpp
+15-0libc/src/__support/OSUtil/linux/syscall_wrappers/CMakeLists.txt
+4-5libc/src/sys/epoll/linux/CMakeLists.txt
+85-225 files

LLVM/project 8e62621 — llvm/lib/Transforms/Vectorize VPlanTransforms.cpp

remove ptr type handling
DeltaFile
+3-8llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+3-81 files

LLVM/project 560952b — libc/src/__support/OSUtil/linux/syscall_wrappers CMakeLists.txt epoll_create.h, libc/src/sys/epoll/linux CMakeLists.txt epoll_create.cpp

[libc] Use a syscall wrapper for epoll_create
DeltaFile
+44-0libc/src/__support/OSUtil/linux/syscall_wrappers/epoll_create.h
+6-22libc/src/sys/epoll/linux/epoll_create.cpp
+17-1utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+13-0libc/src/__support/OSUtil/linux/syscall_wrappers/CMakeLists.txt
+4-2libc/src/sys/epoll/linux/CMakeLists.txt
+84-255 files

LLVM/project fafd000 — clang/lib/AST/ByteCode InterpBuiltinBitCast.cpp, clang/test/AST/ByteCode builtin-bit-cast.cpp

[clang][bytecode] Fix assertion with string pointers in `DoBitCast` (#236337)

Make sure we support bitcasting _from_ string pointers here.
DeltaFile
+9-0clang/test/AST/ByteCode/builtin-bit-cast.cpp
+2-2clang/lib/AST/ByteCode/InterpBuiltinBitCast.cpp
+11-22 files

LLVM/project 1961971 — llvm/lib/Target/AMDGPU/Utils AMDGPUPALMetadata.h, llvm/test/CodeGen/AMDGPU amdpal-chain-metadata.ll

More tests and minor fixes
DeltaFile
+17-1llvm/test/CodeGen/AMDGPU/amdpal-chain-metadata.ll
+1-1llvm/lib/Target/AMDGPU/Utils/AMDGPUPALMetadata.h
+18-22 files

LLVM/project 44868d2 — llvm/lib/Analysis ValueTracking.cpp, llvm/lib/Transforms/InstCombine InstCombineCompares.cpp

[InstCombine] Generalize existing pattern from "abs(val) != 0 -> val != 0" to "abs(val) == 0 -> val == 0" (#233763)

Generalize fold of `(c ? x : -x) != 0` to `x != 0` by moving the pattern
to stripNullTest() and thus also supporting `==` predicates and other
patterns supported by that helper.

The missed pattern is noticed in Google Abseil's demangler
(https://github.com/abseil/abseil-cpp/blob/master/absl/debugging/internal/demangle.cc).

Proof: https://alive2.llvm.org/ce/z/7WQeXT

Fixes #233753

Assisted-by: Qwen3.7-Plus, which helps me locate the existing pattern
instead of opening a new pattern.
DeltaFile
+24-0llvm/test/Transforms/InstCombine/icmp.ll
+0-16llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
+8-0llvm/lib/Analysis/ValueTracking.cpp
+32-163 files

LLVM/project 4215403 — llvm/lib/Target/AMDGPU SIISelLowering.cpp, llvm/test/CodeGen/AMDGPU insert_vector_elt.v2i16.ll insert_vector_elt.v2bf16.ll

[AMDGPU] Custom lower dynamic insertelt on wide vectors of 16-bit elements (#232288)

Currently, in case of dynamic-index `insertelement` into v8, v16 and v32
of i16, f16 and bf16 was set to Expand. At -O1 and above, single inserts
were expanded into a select per element and chains of inserts were
folded into a stack temporary. At -O0, every insert went through the
stack unconditionally.

This patch extends the existing `v_bfi_b32` custom lowering, previously
limited to 64-bit vectors, to the 16-bit wide vectors as well, making
`INSERT_VECTOR_ELT` as now Custom for them, so legalization uses the
custom lowering at all optimization levels, and the generic DAGCombiner
chain fold, which only applies to Expand types, no longer fires.

In 'lowerINSERT_VECTOR_ELT' each 64-bit sized piece updates with `(Mask
& splat(Val)) | (~Mask & Piece)`, where only the piece holding the index
gets a nonzero mask, alongwith skipping `performInsertVectorEltCombine`
that use select-per-element expansion for such types, since the custom
lowering is cheaper. wider i8 vectors still use the stack.
DeltaFile
+1,013-90llvm/test/CodeGen/AMDGPU/insert_vector_dynelt.ll
+251-587llvm/test/CodeGen/AMDGPU/insert_vector_elt.v2bf16.ll
+187-463llvm/test/CodeGen/AMDGPU/insert_vector_elt.v2i16.ll
+58-25llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+1,509-1,1654 files

LLVM/project b723001 — flang/lib/Optimizer/Transforms AddAliasTags.cpp, flang/test/Transforms tbaa-omp-private.fir

[flang][AddAliasTags] OpenMP privatization is a local allocation (#236201)

OpenMP privatization generates code which looks a bit like this
```
%host = ...
omp.parallel private(@privatizer %host -> %private_copy : !fir.ref<type>) {
  %priv = fir.declare %private_copy ... -> !fir.ref<type>
}
```

`fir::AliasAnalysis` already correctly categorises accesses to these
private variables (`%priv` in this example) as local allocations. It
reports the source operation for the allocation as being the
`fir.declare` operation (as there is no allocation operation visible in
mlir).

When AddAliasTags processed this access it did not handle allocations
having `fir.declare` as their source and so was not able to give it the
local allocation tag. This commit fixes that by treating `fir.declare`

    [15 lines not shown]
DeltaFile
+198-0flang/test/Transforms/tbaa-omp-private.fir
+14-2flang/lib/Optimizer/Transforms/AddAliasTags.cpp
+212-22 files

LLVM/project cc717ca — libc/src/__support/math cospif16.h, libc/test/src/math/smoke cospif16_test.cpp

[libc][math] Fix  error handling
DeltaFile
+9-4libc/src/__support/math/cospif16.h
+4-1libc/test/src/math/smoke/cospif16_test.cpp
+13-52 files

LLVM/project 32dbc53 — mlir/include/mlir/Dialect/SPIRV/IR SPIRVStructureOps.td, mlir/lib/Dialect/SPIRV/IR SPIRVOps.cpp

[mlir][SPIR-V] Move symbol lookups into verifySymbolUses (#235042)

Looking up symbols in verify() made verification quadratic
DeltaFile
+44-28mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp
+16-7mlir/include/mlir/Dialect/SPIRV/IR/SPIRVStructureOps.td
+15-0mlir/test/Dialect/SPIRV/IR/structure-ops.mlir
+75-353 files

LLVM/project 9e6672d — clang/test/Analysis lifetime-end-order.cpp

Add helper to the foor loop test case.
DeltaFile
+3-0clang/test/Analysis/lifetime-end-order.cpp
+3-01 files

LLVM/project ac4bd3c — mlir/test/lib/IR CMakeLists.txt

[MLIR] Fix regression in linking to `MLIRAnalysisBase` via dylib (#236359)

Fix the regression introduced in #232793 where the `MLIRTestIR` library
ends up linking directly to `MLIRAnalysisBase` rather than to `MLIR`
dylib, and therefore duplicate it and all the static libraries it
depends on the linker command line.

Signed-off-by: Michał Górny <mgorny at gentoo.org>
DeltaFile
+2-2mlir/test/lib/IR/CMakeLists.txt
+2-21 files

LLVM/project 7ce39ab — llvm/include/llvm/CodeGen TargetLowering.h, llvm/test/CodeGen/AArch64 partial-reduce-non-power-of-two-elts.ll

[AArch64][ISel] Fix crash for partial reduction actions (#236179)

getPartialReduceMLAAction assumed that the provided VTs would always be
simple, and crashed if not. So we should just bail out in such cases
(e.g. invalid non-power-of-two element types) by defaulting to Expand.
DeltaFile
+39-0llvm/test/CodeGen/AArch64/partial-reduce-non-power-of-two-elts.ll
+4-0llvm/include/llvm/CodeGen/TargetLowering.h
+43-02 files

LLVM/project 1040982 — llvm/lib/Target/AMDGPU AMDGPUCodeGenPrepare.cpp, llvm/test/CodeGen/AMDGPU amdgpu-codegenprepare-mul24-mad64.ll mad_u64_u32_mul24.ll

address review feedback
DeltaFile
+186-66llvm/test/CodeGen/AMDGPU/mad_u64_u32_mul24.ll
+100-27llvm/test/CodeGen/AMDGPU/amdgpu-codegenprepare-mul24-mad64.ll
+4-0llvm/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp
+290-933 files

LLVM/project 6a18408 — llvm/test/CodeGen/AArch64 shiftregister-from-and.ll wide-scalar-shift-legalization.ll, llvm/test/CodeGen/AArch64/GlobalISel split-wide-shifts-multiway.ll

[AArch64] Allow selecting shifted register from and with UBFX. (#233882)

For LSL/LSR, it required a mask or field extending to MSB, but UBFX can
extract smaller fields.
DeltaFile
+140-150llvm/test/CodeGen/AArch64/div-i256.ll
+131-151llvm/test/CodeGen/AArch64/fcvt-i256.ll
+24-30llvm/test/CodeGen/AArch64/GlobalISel/split-wide-shifts-multiway.ll
+20-23llvm/test/CodeGen/AArch64/shift-i256.ll
+17-20llvm/test/CodeGen/AArch64/wide-scalar-shift-legalization.ll
+10-13llvm/test/CodeGen/AArch64/shiftregister-from-and.ll
+342-3873 files not shown
+361-4099 files

LLVM/project e76a910 — clang/test/Analysis lifetime-end-order.cpp

Exercise the lifetime end of variables in the inner scope.
DeltaFile
+5-0clang/test/Analysis/lifetime-end-order.cpp
+5-01 files

LLVM/project 749d820 — libcxx CMakeLists.txt, libcxx/include/__configuration availability.h

[libc++] Make __thread_hardware_concurrency() an alias to an existing symbol (#234575)

This PR changes `__thread_hardware_concurrency()` to be an alias to
`std::thread::hardware_concurrency()`, which is already exported from
the ABI.
Also adds the `_LIBCPP_ABI_NAMESPACE_LEN` macro to simplify the name
mangling.
DeltaFile
+23-26libcxx/src/thread.cpp
+18-4libcxx/include/__thread/hardware_concurrency.h
+0-8libcxx/include/__thread/thread.h
+0-6libcxx/lib/abi/CHANGELOG.TXT
+0-6libcxx/include/__configuration/availability.h
+2-0libcxx/CMakeLists.txt
+43-5010 files not shown
+44-5916 files

LLVM/project cba58dc — llvm/lib/Transforms/Scalar CorrelatedValuePropagation.cpp

[CVP] Restructure pass to use `CVPImpl` implementation class, unify style (NFC) (#236038)

CorrelatedValuePropagation instruction-processing routines and helpers
have been abstracted out into a dedicated implementation class, so as to
avoid threading LVI, among other things. Minor opportunity to modernize
code and unify style where possible.
DeltaFile
+222-187llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
+222-1871 files

LLVM/project a6b20ab — mlir/include/mlir/IR Operation.h

[mlir] Read the attr dictionary directly in getDialectAttrs (#236339)

getAttrs also copies attrs from properties on every call, but dialect
attrs are never stored there

LLVM IR translation calls getDialectAttrs() on every op, skipping the
dictionary rebuild for ops with properties makes translation faster,
visible on large modules
DeltaFile
+3-3mlir/include/mlir/IR/Operation.h
+3-31 files

LLVM/project f9e6e69 — lldb/test/API/functionalities/gdb_remote_client TestAttachWaitConnected.py

[lldb][test] Disable TestAttachWaitConnected.py on Linux (#236357)

It has been flaky on the AArch64 Linux buildbot and I do not think the
reason will be related to the architecture.

See #236354.
DeltaFile
+2-0lldb/test/API/functionalities/gdb_remote_client/TestAttachWaitConnected.py
+2-01 files