[AMDGPU] Make LowerModuleLDS a noop on an already lowered module (#217075)
Full LTO reruns the pass on each codegen partition, where it matched its
own lowered structs and re-expanded their constexpr uses
[libc] Slight optimization for small send_n / recv_n buffers (#218551)
Summary:
Adds a convergent short-circuit condition that lets the compiler
optimize out this loop better in cases where the size is known. Without
this sometimes the compiler could not figure out that a constant size
did not need the extra loop and the backedges would remain.
[Clang][AIX] Error on -mloadtime-comment-vars in cc1 for non-AIX targets
The driver continues to warn and drop the option for unsupported targets;
cc1, reachable directly or via -Xclang, now rejects it with
err_drv_unsupported_opt_for_target, mirroring the -mabi=quadword-atomics
and -mxcoff-roptr checks.
routing: Use fib-aware ifa lookup in ifa_ifwithroute()
Use ifa_ifwithaddr_fib() to fix fib-specific ifa lookups with route.
Differential Revision: https://reviews.freebsd.org/D59128
AMDGPU: Touch up gfx1250-strict definition details
Rename the subarch triple enum for consistency, and place
it next to 1250. Add expanded test coverage.
Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
NAS-142056 / 27.0.0-BETA.1 / Do not annotate the model serializers' return type (#19534)
`middlewared --dump-api` describes every model that uses
`ForUpdateMetaclass` or has a `NotRequired` field as a bare `{"type":
"object"}`. That includes every `*QueryResultItem`, since
`query_result_item()` applies `ForUpdateMetaclass` to every `*Entry` —
so every `*.query` return value in the dump has no fields at all.
Pydantic derives a model's serialization-mode JSON schema from its
functional serializer's declared return type rather than from the
fields, and 35afa5af9c annotated `_not_required_serializer` and
`_for_update_serializer` as `-> dict[str, Any]` to satisfy the `mypy
--strict` it enabled for `middlewared/api/base/`. Dropping the
annotations restores the field-derived schema. Only their absence works:
`-> Any` and `@model_serializer(return_type=Any)` both render as `{}`,
which is worse.
`doc.py` is the only caller in the tree that generates schemas in
serialization mode, so this is confined to the dump — but the dump is
[5 lines not shown]
MachineLICM: Fix preheader insertion point with SUCC_ARGS
Hoist loop-invariant instructions to getBlockEndInsertPt() instead of
getFirstTerminator(), so they land before the SUCC_ARGS cluster rather
than inside it.
Co-Authored-By: Claude <noreply at anthropic.com> (Claude Opus 4.8)
CodeGen: Fix MachineCSE PRE insert point with SUCC_ARGS
Hoist to getBlockEndInsertPt() instead of getFirstTerminator(), so a hoisted
instruction lands before the SUCC_ARGS cluster rather than inside it.
Co-Authored-By: Claude <noreply at anthropic.com> (Claude Opus 4.8)
CodeGen: Represent block arguments on MachineBasicBlock
The receiver half of the block-argument representation: a block declares a list
of virtual registers that receive values forwarded by each predecessor's
SUCC_ARGS. Unlike a PHI, a block argument is defined by the block itself, not by
an instruction.
MachineBasicBlock holds the argument list, printed and parsed as an "arguments:"
block header line. MachineRegisterInfo maps each argument to its defining block,
so getDefBlock works for these registers. The verifier treats an argument as
defined at block entry and requires each predecessor to supply one matching
SUCC_ARGS.
This is only building infrastructure, and is not yet used.
Co-Authored-By: Claude <noreply at anthropic.com> (Claude Opus 4.8)
CodeGen: Add SUCC_ARGS pseudo-instruction
The sender half of a block-argument representation for Machine IR: a
"reverse PHI" that forwards values from a predecessor's bottom to a
successor block's arguments along one CFG edge. Operand 0 is the successor
block; the rest are the forwarded value registers, mapped positionally.
Like PHI, SUCC_ARGS is edge-specific: it must stay in its block, so it is
excluded from CSE and hoisting, and it defines no register but is not dead.
SUCC_ARGS are clustered contiguously immediately before the terminators,
mirroring how PHIs are clustered at the top of a block; the verifier
enforces this and the succ_args() range and getBlockEndInsertPt() let
consumers work with the cluster. Inert; no producer emits it yet.
Co-Authored-By: Claude <noreply at anthropic.com> (Claude Opus 4.8)
Firewall: Rules: Add received-on interface keyword (as interface origin) (#10797)
Allow outbound rules to match the interface where traffic originally entered,
making address-independent security zone policies possible.
Multiple rule and origin interfaces are supported. Origin matching is limited
to outbound rules, while inversion requires exactly one origin interface.
Leaving the origin empty preserves the existing rule behavior.
nfs: On reflection, just clamp the export_args buffer to 64 KiB.
Keep it simple, just make sure userland doesn't trigger contiguous
kva allocation of more than 64 KiB.
PR kern/60645: nfssvc(2): arithmetic overflow in input array sizing