[SandboxVec][LoadStoreVec] Don't pack non-integral pointer constants (#236984)
This patch fixes `getEquivalentConstantWithType()` by adding a check
that won't vectorize non-integral pointers constants.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[DAGCombiner] Don't always spill widened dynamic insertelt chains via stack (#232086)
`visitINSERT_VECTOR_ELT` folds a chain of runtime-index inserts
into one stack temporary when `isOperationExpand` says each insert
would spill. That check is true for every illegal type, including
`TypeWidenVector`, so a short vector was spilled even though widening
redoes the insert on the widened type. The predicate now follows
widening and keeps the chain in registers when that insert is
`Legal` or `Promote`.`Custom` action still uses stack, because
that lowering can fall back to a temporary.
On gfx942, the `<9 x double>` tests no longer use scratch. A per-lane
index is lowered with `v_cndmask`, and an index shared by the wave
uses `s_set_gpr_idx`.
It solves https://amd-hub.atlassian.net/browse/ROCM-30603
MachineLICM: Do not update cached and unpreserved analyses
With the new pass manager, getOrCreatePreheader passed the analysis
manager to SplitCriticalEdge, which updates any cached SlotIndexes or
LiveIntervals. MachineLICM does not maintain these so the split could
update a stale SlotIndexes live from an earlier pass and fail the
"Instr already indexed" assertion. Only pass the analyses MachineLICM
keeps up to date.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[LoopUnroll] Add `shouldRuntimeUnroll()` (NFC) (#236976)
Move the runtime unrolling heuristics into their own function, as the
other unrolling heuristics do.
[clang-tidy][NFC] Move isOutOfLine matcher into utils::Matchers (#228547)
AI Usage: Assisted by Grok 4.6 (Cursor)
---------
Co-authored-by: Cursor <cursoragent at cursor.com>
PeepholeOptimizer: Fix value tracking through SUBREG_TO_REG
The tracked source of a SUBREG_TO_REG was reported as the subregister
index of the inserted value, rather than the full inserted value. The
inserted value is never a register class supporting that index, so
this never found a usable source.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[LoongArch] Remove duplicate addRequired in LoongArchDeadRegisterDefinitions (#236325)
getAnalysisUsage called AU.addRequired<LiveIntervalsWrapperPass>()
twice. Drop the redundant second call.
[RISCV][GlobalISel] Fix call lowering for Zfinx and Zhinx (#231981)
I found this crash while doing fuzzing.
With Zfinx/Zhinx, the calling convention assigns f32 and f16 values to
the GPRF32/GPRF16 aliases of the GPRs (e.g. `$x10_w`, `$x10_h`).
GlobalISel keeps these values on the GPR register bank, which only maps
to the full-width `gpr`
class, so call lowering produced copies such as:
> $x10_w = COPY %0:gpr
After register allocation this becomes `$x10_w = COPY $x10`. The two
registers share no register class and it crashes.
This commit fixes this problem in the outgoing and incoming value
handlers by mapping a GPRF32/GPRF16
location to its containing GPR.
[2 lines not shown]
AArch64: Respect subregister operands in some peephole opts
Get the correct operand constraint class accounting for the any
subregister indexes on the operands. This previously would using the
direct register class from the virtual register, not accounting for
the subregister indexes in the operands. Also remove pointless
attempts to treat inability to constrain as a recoverable condition
since all the uses asserted anyway.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[SandboxVec][LoadStoreVec] Don't pack non-integral pointer constants
getEquivalentConstantWithType() only rejected a non-integral pointer
destination type (via an assert), while a non-integral source such as
'ptr addrspace(5) null' was silently converted with ptrtoint. A
non-integral pointer has no stable integer representation, so it cannot
be packed into an integer lane.
Add isNonIntegralPtr() and return nullptr from
getEquivalentConstantWithType() when either type is a non-integral
pointer, which makes createConstantVector() give up on the bundle.
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
[AtomicExpand] Preserve denormal-mode metadata when copying atomics (#232039)
Copy !atomic.ignore.denormal.mode in copyMetadataForAtomic. When we
scalarize an elementwise atomic, for example, we want to propagate this
metadata so that the individual scalar atomics can ignore denormal mode.
make StrictModes apply to ~/.k5login and the home directory that
contains it, just like how it applies to other authn-critical files.
Anthropic ANT-2026-W7F2ULDN
avoid fatal() if a PKCS#11 key was added multiple times (e.g. for
multiple certificates) and then subsequently freed. The key-free code
incorrectly assumed that keys were singular.
Anthropic ANT-2026-V7H1QCC4
[SLP][NFC] Add pre-commit tests for merged inputops flag propagation (#236366)
Add two tests covering flag propagation for the merge-input-operands
transform: one where the fmul lanes carry different fast-math flags and
one where the mul lanes carry different integer wrap flags. Both record
the current vectorization, so a later patch shows the effect of merging.
Co-authored-by: Balakrishna Bandlapalli <bbandlap at gmail.com>
Co-authored-by: Cursor <cursoragent at cursor.com>
[SLP] Do not drop used undef lanes when peeking through resizing shuffles
When two resizing shuffles are combined, their second operands were
checked with isUndefVector, which accepts undef. If a used result lane
reads an undef element of the second operand, the combined mask remaps
it to an element of the first operand, which may be poison, turning
undef into poison. Peek through only when the used second-operand lanes
are poison.
Assisted-by: Cursor
Reviewers:
Pull Request: https://github.com/llvm/llvm-project/pull/237088
only replace prior auth_opts if merging later ones succeeds.
Part of fix for server fatal() with inconsistent log message when
`AuthenticationMethods publickey,publickey` fails on the second key because
of inconsistent authentication options.
Anthropic ANT-2026-UES5TKX0
make strict KEX errors return an error rather than fatal()ing the
process. This avoids ssh-keyscan crashing out when one host of many
fails strict KEX.
To avoid the risk of continuing past such a failure in ssh or sshd, make
such failures "poison" the packet code so that future attempts to send
or receive packets always an error.
Anthropic ANT-2026-TU0DN0EM (poisoning bit by me)
[MLIR][Python] Only raise numpy/ml_dtypes minimums for Python 3.15
Use python_version markers instead of raising the numpy cap for everyone:
Python < 3.15 keeps numpy <= 2.1.2, and 3.15 gets numpy 2.5.x and
ml_dtypes 0.6.0 (the first releases with cp315 wheels).