[fir][aa] Add opt-in cache for use by fir AliasAnalysis clients
Adds AliasAnalysisRecursiveEffectsCache, an opt-in cache that memoizes
per-operation read/write summaries so that getModRef on an operation with
HasRecursiveMemoryEffects does not re-walk its nested regions on every
query.
This is independent of the getSource() memoization added separately: that
one is keyed on (value, flags) and answers "what memory does this value
refer to", while this one is keyed on the operation and answers "what does
this operation and everything nested in it read and write". LICM enables
both, since it only hoists pure-read ops and so invalidates neither.
[CIR] Use the modern enum case classes
The `I32EnumAttrCase` family carries an `Attr` half, and an `IntegerAttr`
predicate with it, that a CIR enum has no use for now that the enums derive
from `EnumInfo`. Upstream says of those forms that they "are not needed when
using the newer `EnumCase` form".
Rename all 198 of them to `I32EnumCase`, `I32BitEnumCaseNone`,
`I32BitEnumCaseBit` and `BitEnumCaseGroup`. The group class drops its width
prefix because the modern spelling takes the width from its cases.
NFC, mechanical.
RuntimeLibcallsEmitter: Let a consumer's own library variant beat its exclusion
A target can pull a shared library via LibraryRef<Lib, [impls]> to drop some
impls, then re-add its own versions through a same-name library variant guarded
on that target. Previously the exclusion's setUnavailable calls were emitted at
the end of setAvailableLibFuncs_<name>, after every variant, so they clobbered
the target's own re-adds.
Defer emitting a variant until after the exclusions when it re-adds an impl its
own consumer excludes (same predicates), so the target's re-add wins while
the exclusion still suppresses every other variant's contribution.
This is yet unused infrastructure for future changes.
Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
RuntimeLibcalls: Remove the dead IsDefault emitter machinery
The IsDefault bit on RuntimeLibcallImpl fed a LibCallToDefaultImpl map in the
TableGen backend that was populated but never read.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
RuntimeLibcalls: Add LibraryRef for dispatch-with-exclusion
Let a SystemRuntimeLibrary dispatch a shared provider library while dropping the
impls the target replaces, since a library reference cannot nest inside (sub ...).
This is a compromise from the ideal of explicitly listing all calls, but getting
to that point is prooving to be difficult.
The opt-out is emitted inside setAvailableLibFuncs_<lib>, so the single library's
logic is self contained.
Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
py-eth-rlp: updated to 3.0.0
eth-rlp v3.0.0-beta.1 (2025-12-17)
Breaking Changes
- Drop support for Python 3.8 and 3.9
Features
- Add support for pyrlp v5 and Python 3.14
RuntimeLibcalls: Dispatch to library functions from SystemRuntimeLibrary (#217593)
When a SystemRuntimeLibrary names LibcallLibrary defs,
setTargetRuntimeLibcallSets now dispatches each under an isLibraryAvailable
guard, so an impl can be homed into a library without dropping it from the target.
Non-library members keep the inline path. No target names a library yet, so output
is unchanged.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
[ORC] Move Mangler implementation from OrcShared to OrcJIT (#221942)
Many OrcJIT clients don't directly depend on OrcSupport, and so broke
when e91092685eab moved mangling from OrcJIT to OrcSupport.
We want to reorganize these libraries in the not too distant future.
Rather than forcing clients to update dependencies that may change again
soon, move the code (but not the header) back into the OrcJIT library.
We can address the mismatch between the header's and implementation's
home during the library reorganization.
py-rlp: updated to 5.0.0
pyrlp v5.0.0-beta.1 (2025-12-12)
Breaking Changes
- Drop support for Python 3.8 and 3.9
Features
- Add support for Python 3.14. Note the Rust backend only works for Python 3.10-3.12
AMDGPU: Remove llvm.amdgcn.addrspacecast.nonnull
The intrinsic is fully replaced by the nonnull flag on addrspacecast,
so remove it.
Old bitcode/IR is autoupgraded, though this is very conservative. This
intrinsic was only inserted by the backend, and hopefully nobody was
directly emitting it.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>