[Mips][RuntimeDyld] Reserve t9 for static JIT stubs (#228594)
MIPS PIC functions expect their entry address in t9 so their prologue
can compute gp. However, R_MIPS_26 is used for both function calls and
jumps within a function. A local jump is not a call boundary, so t9 may
still hold a live value there even though it is caller-saved.
Commit 458a983df422df85363ec40b1f1556f55b238aac switched these stubs
from t9 to at to preserve live t9 values across local jumps. That breaks
calls from JIT code with the static relocation model into PIC functions,
because the callee receives the wrong t9 and computes the wrong gp.
Revert that change so every MIPS stub materializes its destination in
t9. Reserve t9 in codegen to avoid stubs corrupting live values in
registers.
Fixes #228414.
[mlir][scf] Specialize loops with constant affine.min operands (#228909)
`scf-for-loop-specialization` only inspected affine map results, so it
missed constants supplied through map operands. Canonicalize the map and
operands before finding constant results.
Fixes #228470
[MLIR] ValueBoundsOpInterface: slice size from source size (#221756)
Improve ValueBoundsOpInterface for tensor.extract_slice by adding an
upper bound of `ceil((sourceSize - offset) / stride)`.
[LV] Avoid repeatedly expanding ignored operand graphs. (NFC) (#228944)
Add a set to track the already processed operations in DeadOps, to avoid
repeatedly processing the same instruction chains for ops with shared
operands.
Without the fix, the newly added test takes a long time to compile.
Addresses part of https://github.com/llvm/llvm-project/issues/228403.
[KnownFPClass] Add output/input denormal helpers (#225575)
Added `applyInputDenormalMode(KnownSrc, Mode)` and
`applyOutputDenormalMode(KnownSrc, Mode)`. These helpers allow us to
correctly handle the output/input denormal mode correctly every single
time, while also being much easier to use.
Example usage:
```c++
KnownFPClass func(const KnownFPClass& KnownSrc_, DenormalMode Mode) {
KnownFPClass KnownSrc = applyInputDenormalMode(KnownSrc_, Mode);
KnownFPClass Known;
// We can treat everything here as if it were IEEE.
return applyOutputDenormalMode(Known, Mode);
}
```
[2 lines not shown]
[mlir][ArmSME][NFC] Improving the readability of outer product fusion (#227140)
This NFC improves the readability of the outer-product fusion in ArmSME.
---------
Signed-off-by: Federico Bruzzone <federico.bruzzone.i at gmail.com>
[LV] Add tests for reductions of ext(mul) with narrow wrapping mul (NFC) (#228943)
Add tests for partial reductions and in-loop multiply-accumulate
reductions of ext(mul(ext(A), ext(B))) where the narrow mul may or may
not wrap with respect to the extend kinds.
Some of those combinations are currently miscompiled.
https://alive2.llvm.org/ce/z/Ys8bNn
[LV] Use a ResumeForEpilogue marker for the main vector TC (NFC) (#228942)
Previously the vector trip count of the main loop was recovered via IR
based pattern matching.
Instead, add a ResumeForEpilogue marker for the main plan's vector trip
count to its middle block, which records the generated value, and pass
it to addMinimumVectorEpilogueIterationCheck as a VPValue. The check is
only reached after the main vector loop, so it uses that value directly
rather than the resume phi merging it with the bypass value.
This makes matching more robust and is another step towards modeling the
full epilogue skeleton in VPlan.
databases/openvoxdb-terminus9: Use the final version
The version was not bumped to the final version before committing.
Fix this and use the final tarball.
With hat: puppet
science/rdkit: update 2025_09_2 → 2026.03.6
also:
- fixed many tests and upstreamed fixes (their testsuite is in a disarray,
we shouldn't really be fixing people's tests, but anyways)
- discovered and fixed wrong clang detection in the code, reported
upstream
- fixed wrongfully excluded code that caused plist issues
- fixed compiler crash on 16 (by using llvm:23)
(cherry picked from commit bba96c42a29fc0191b9513dde1e0ff90f8ddcc5b)
[ADT] Remove zombie-instance handling from SmallDenseMapStorage (NFC) (#228925)
This patch removes the redundant storage.Large.NumBuckets == 0 check
and the two dead stores to the field from SmallDenseMapStorage, and
simplifies DenseMapStorage::maybeMoveFast to use direct assignment
instead of swap.
SmallDenseMapStorage used to have a zombie state:
!Small && storage.Large.NumBuckets == 0
in grow() so that ~DenseMapBase(), which calls deallocateBuckets(),
could safely destruct the moved-from temporary DenseMapBase instance.
Likewise, DenseMapStorage::maybeMoveFast used swap(Other) so that the
temporary instance would not deallocate the moved-from buffer upon
destruction.
With #228802, grow() directly uses StorageT for the temporary storage,
which has a trivial destructor, so neither workaround is needed.
Assisted-by: Antigravity
[llvm-objcopy][COFF] Keep COMDAT section definition symbols when stripping (#228783)
--strip-unneeded and --discard-all removed the section definition symbol of
a COMDAT section if no relocation referenced it directly, which is the
common case since relocations target the COMDAT leader. The aux record of
that symbol carries the COMDAT selection; without it lld discards the
section as a leaderless COMDAT and silently drops relocations against it.
This broke e.g. .refptr.* sections in MinGW objects, producing executables
that load garbage instead of the referenced pointer.
Assisted-by: Claude Opus 5.5