[CIR] Skip function bodies imported from other named modules (#239686)
When a function's body comes from another named module, CIRGen now emits
just a declaration instead of hitting an errorNYI. always_inline
template instantiations still get their bodies, since a library may not
provide symbols for them.
Assisted-by: Cursor / Claude Opus 5.5
textproc/groff-pdfmark
Adding groff-pdfmark package to make available the pdfmark macros and supporting scripts that were removed from the main groff distribution in recent versions.
libpmc: Strip leading zeros from the cpuid model
Upstream's mapfile.csv lists models without leading zeros, so entries
for models below 10h had to be fixed up by hand on every import. Strip
them before matching and use the entries as imported.
Add tests to validate the functionality.
Reviewed by: mhorne, Ali Mashtizadeh <ali at mashtizadeh.com>
Sponsored by: Advanced Micro Devices, Inc.
MFC after: 1 week
Signed-off-by: Osvaldo Janeri Filho <ojanerif at amd.com>
Differential Revision: https://reviews.freebsd.org/D60790
Speed up std::invoke() compile times and rename __invoke_result_t to __direct_invoke_result_t (#213403)
This may surface a pre-existing recursive template instantiation compiler bug (#236677) in user code.
[CIR] Emit llvmOpProps setters straight from the dag
Every generated llvmOp body now starts from a `props` local, and the
setters are written while walking the llvmOpProps dag, so the
ForwardedProp struct and its parse helper go away. The emitter checks
only the entry shape; a name that is not an argument of the op fails to
compile in the generated code.
Assisted-by: Claude Code (Claude Opus 5.5).
[LifetimeSafety] Start alias chain search at the use instead of the block end (#240655)
Within the use's block, the alias chain search started from the block
end, so it could report an alias path through a flow that only happens
after the use:
```cpp
struct S {
int *p_;
void bar();
void f() {
int *q;
{
int num;
int *p = #
p_ = p; // note: 'p' aliases 'num' (after)
q = p; // note: 'p' aliases 'num' (before)
}
bar(); // reads p_
[11 lines not shown]
[LifetimeSafety] Don't drop the last alias note for chains from a declaration (#240654)
`dropLeadingLoads` removes the casts at the front of an alias chain
because, when the chain starts from an expression such as the copy in
`return v;`, they only load the variable that the warning already points
at. When the chain starts from a declaration instead, those casts come
from the write that stored the loan, so dropping them loses the alias
closest to the use.
```cpp
struct S {
int *p_;
void bar();
void f() {
{
int num;
int *p = #
int *q = p; // note: 'p' aliases 'num'
p_ = q; // note: 'q' aliases 'num' (missing before)
[16 lines not shown]
[libc] Use a syscall wrapper for getgid (#240782)
This PR move getgid behind the centralized syscall wrappers, following
libc/docs/dev/syscall_wrapper_refactor.md.
[libc] Use a syscall wrapper for gethostname (#240781)
This PR move gethostname behind the centralized syscall wrappers,
following libc/docs/dev/syscall_wrapper_refactor.md.
[libc] Use a syscall wrapper for getppid (#240780)
This PR move getppid behind the centralized syscall wrappers, following
libc/docs/dev/syscall_wrapper_refactor.md.
[libc] Use a syscall wrapper for getuid (#240779)
This PR move getuid behind the centralized syscall wrappers, following
libc/docs/dev/syscall_wrapper_refactor.md.
[InstCombine] Simplify GEP canonicalization (#240846)
This removes a lot of the custom GEP canonicalization code and instead
reuses the logic from IRBuilder. This should be mostly NFC, though this
does allow us to handle one more edge case (vectors with elements of
overaligned type).
I've left the shouldCanonicalizeGEPToPtrAdd() logic alone for now, as
that would significantly affect the output (by using scaled ptradd).
[AArch64] Disable store-insert patterns under BE. (#240374)
The patterns from #190320 were incorrect for BE, make sure they are
disabled when not storing a 64bit element.
Fixes #240293
[LifetimeSafety] Map arguments to an explicit object parameter correctly (#240411)
For a C++23 explicit object member function the object argument binds to
`self`, getParamDecl(0), but getTrackedArgInfo mapped argument I to
getParamDecl(I - 1) as for an implicit object. A lifetimebound parameter
after `self` was ignored, lifetimebound on `self` was attributed to the
next argument, and a by-value `self` of a gsl::Pointer hit an assertion.
Add hasObjectArg, hasImplicitObjectArg and getParamForArg, and use them
wherever call arguments are mapped to parameters.
Assisted-by: Claude Opus 5.5
Co-authored-by: Gabor Horvath <gaborh at apple.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
[46 lines not shown]
[lldb][Windows] Update the decorators of aarch64 tests (#240872)
`TestPlatformConnect.py` passes on ARM64 Windows with lldb-server.exe.
Remove the XFAIL.
`TestPythonOSPlugin.py` fails on ARM64 Windows with lldb-server.exe but
not on x64. Add a special XFAIL.
This unblocks the aarch64 Windows LLDB buildbot.
Allow configured origins to read /api/versions for TrueNAS Connect
nginx answers CORS on /api/versions only when the system is registered
with TrueNAS Connect, and only for the TNC web app (plus `ng serve` on
dev and staging). A TNC client run against an unregistered system (an
ephemeral TNC stack, local development, CI) cannot read the versions, so
@truenas/api-client falls back to v25.10.0 on systems that serve newer
API versions.
* tn_connect gains `allowed_origins`, set with the private
tn_connect.update_environment. Each must be an origin exactly as a
browser sends it: https with a lowercase host name, or http to
localhost or 127.0.0.1, with an optional port and no path. Unlike the
endpoints it may change while TNC is enabled. update_environment now
reloads nginx after a write, since the endpoints and the origins both
reach its CORS maps.
* /api/versions answers CORS, with Vary: Origin, when the system is
registered or allowed_origins is not empty. Its map lists the allowed
origins and falls back to the existing $allow_origin. /_download keeps
[7 lines not shown]
iflib: rate limit deferred tx ring drain
When simple_tx gives up & return ENOBUFS because the tx ring is full,
we were doing a GROUPTASK_ENQUEUE(&txq->ift_task) each time.
On a tx ring that has overflowed and is being hammered on
by a fast UDP sender, this can result in a massive increase in
context switches (I've seen over 30M ctxw/sec due to this, and
the ctxsw codepath taking roughly 50% CPU).
This change removes the GROUPTASK_ENQUEUE() and replaces it
with a call to a callout which drains the tx ring. The callout time is
determined based on the link speed, estimating how long it would take
for a large fraction of of a ring containing full-MTU packets to drain.
This removes the 30M ctxsw / sec in my test case and reduces it
to roughly a doubling of ctxsws.
Reviewed by: kbowling
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D61313
[AMDGPU] Reuse the RHS known bits for self-multiply MUL_U24/MUL_I24 (#238762)
`computeKnownBitsForTargetNode` and `computeKnownBitsForTargetInstr` for
`AMDGPUISD::MUL_U24`/`MUL_I24` (and the `llvm.amdgcn.mul.u24/i24`
intrinsics)
queried the known bits of both operands. For a self-multiply both
operands are
the same value, so query the RHS first and reuse its known bits for the
LHS
instead of repeating the query.
GlobalISel additionally bailed out as soon as either operand was
unknown. That
loses information: even when every operand bit is unknown, a defined X *
X has
bit 1 clear (a square is 0 or 1 modulo 4), which
`KnownBits::mul(..., NoUndefSelfMultiply=true)` infers. Those two early
exits
are removed, so GlobalISel now infers this (and everything a known LHS
[8 lines not shown]