MC: Handle XCOFF directives in the null streamer (#239821)
MCNullStreamer only overrode emitXCOFFSymbolLinkageWithVisibility, so
llc -filetype=null on AIX hit the llvm_unreachable in the MCStreamer
base implementations of .lcomm, .ref, .except and .info emission.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[VPlan] Transform reverse loads into vp.strided.load with -1 stride
Rebased from the WIP on loop-vectorize/reverse-vp-strided-load.
After simplifyReverses pulls reverses out of elementwise recipes, look
through single-use elementwise trees under a reverse to the reverse
consecutive loads at their leaves (live-ins are allowed as splats), and
replace each load with a vp.strided.load with a negative stride when it
is legal and cheaper than the loads plus the reverse. This is the VPlan
equivalent of RISC-V's performReverseEVLCombine.
Fixes #204154.
[VPlan] Pull permutations through elementwise ops with single scalar operands
pullOutPermutations previously only treated live-ins as splats, but we can generalize this to single scalars. This allows eliminating reverses through e.g. invariant loads.
spa_stats: add "misc" pool stats with suspended & resumed counters
Adds a per-pool kstat called "misc", for ad-hoc counters that don't
obviously belong elsewhere. Then, add three counters,
"pool_suspended_ioerr", "pool_suspended_mmp" and "pool_resumed", that
are incremented each time the pool is transitioned to the suspended or
resumed states in zio_suspend() or zio_resume().
Sponsored-by: TrueNAS
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Matthew Ahrens <matt at mahrens.org>
Signed-off-by: Rob Norris <rob.norris at truenas.com>
Closes #19716
Attributor: Query the memory effects of a call site once
Instead of separately checking mayRead / mayWrite, directly compute
the full memory effects.
attributor-light is 0.1-0.25% faster (callgrind).
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
raidz: take the reflow range lock when spa_ubsync advances
vdev_raidz_io_start() maps an i/o to an expanding RAID-Z vdev with the
reflow offset in spa_ubsync: rows below it use the new location only,
rows above it the old location, and also the new one where the copy has
started. raidz_reflow_sync() takes the range lock as a writer over the
range it commits, but it only writes the new offset into spa_uberblock.
spa_sync() copies that into spa_ubsync at its very end, without the
lock, so an i/o that starts in between still writes the old location of
the committed range.
Once spa_ubsync has advanced, the reflow copies other data over those
old locations, and new writes there go to the new location only. An
i/o from the window that is still in flight then (queued, slow or
retried) lands on data that has already been copied, and that data is
lost once the reflow has passed it.
Take the range lock as a writer over the range spa_ubsync is about to
pass while spa_sync() updates it, so that the update waits for those
[14 lines not shown]
Attributor: Reserve the initial worklist of the fixpoint iteration
CTMark instructions:u with -attributor-enable=light changes by O3 -0.02%,
ThinLTO -0.02%. attributor-light is 0.3-1.0% faster.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
Attributor: Skip looking for callback uses if the callee has no callbacks
getAssociatedArgument collected the callback uses of the call even if
the callee has no !callback metadata. Return the callee argument
directly in that case.
CTMark instructions:u with -attributor-enable=light changes by O3 -0.03%,
ThinLTO -0.04%.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
security/krb5-122: Update to 1.22.3
This is a bug fix release, with a focus on security issues discovered
with the aid of large language models. See
https://web.mit.edu/kerberos/advisories/MITKRB5-SA-2026-001.txt for
information on the risks of continuing to use unpatched releases.
* Fix a logic error when checking PAC server checksums
[CVE-2026-111423].
* Check for unkeyed checksums when validating CAMMAC verifiers
[CVE-2026-71199].
* Fix a loophole in the KDC's client authdata filtering which could
allow clients to include fake PAC and CAMMAC authdata values when
requesting service tickets. These fake values would be rejected by
application servers, were it not for the two bugs noted above.
* Check for the lockdown_keys attribute when processing password
[45 lines not shown]
security/krb5-122: Update to 1.22.3
This is a bug fix release, with a focus on security issues discovered
with the aid of large language models. See
https://web.mit.edu/kerberos/advisories/MITKRB5-SA-2026-001.txt for
information on the risks of continuing to use unpatched releases.
* Fix a logic error when checking PAC server checksums
[CVE-2026-111423].
* Check for unkeyed checksums when validating CAMMAC verifiers
[CVE-2026-71199].
* Fix a loophole in the KDC's client authdata filtering which could
allow clients to include fake PAC and CAMMAC authdata values when
requesting service tickets. These fake values would be rejected by
application servers, were it not for the two bugs noted above.
* Check for the lockdown_keys attribute when processing password
[45 lines not shown]
MustExecute: Don't set up the visited set of the end iterator
The end iterator of every explorer inserted a null instruction into
its visited set and allocating it, though it never explores anything.
CTMark instructions:u with -attributor-enable=light changes by O3 -0.07%,
ThinLTO -0.14%; the Attributor creates an explorer for every run.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
Attributor: Don't copy the triple to check for GPUs
AA::isGPU and the GPU address space helpers copied the module's target
triple on every call, unnecessarily allocating a string.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[RISCV][P-ext] Disable useRVVForFixedLengthVectors when P is enabled. (#240636)
We haven't done anything to select priority for P or RVV. Right now the
setOperation action calls run for both and leave things in a weird
state.
This patch disables useRVVForFixedLengthVectors when P is enabled so we
only run one set of setOperationAction calls for fixed vectors. This is
the lowest effort fix and I suspect there are still more issues.
Fixes #240534.
[InferAddressSpaces] Use a new value map for each rewritten constant (#240662)
When the pass rewrites a flat constant expression, it remaps the
instructions that use it through other constant expressions with a
`ValueMapper`. All rewritten constants shared one map, and the mapper
caches every constant that it visits, including the ones that it maps to
themselves. So when one instruction uses two rewritten constants, the
remap for the first one caches the part with the second one as
unchanged, and the remap for the second one reuses that entry. For
example, if a call has `addrspacecast`s of two flat pointers that are
based on the same `addrspace(3)` global, only one argument is folded.
This PR uses a new map for each rewritten constant.
This PR was assisted by AI but I reviewed all the changes.