[SLP]Fix stale deps for operands of non-scheduled expanded-binop parents
When a parent tree entry does not require scheduling and contains an
expanded binop (e.g. `shl x, 1` modelled as `add x, x`), it never gets
a bundle. So, the operand's `ScheduleData::Dependencies` keeps the count
from the first sibling's `tryScheduleBundle` and misses later-added
entries sharing the same expanded scalar. At real scheduling,
`schedule()` then issues decrements for every current containing entry
and trips `UnscheduledDeps >= 0`.
Fixes #193040
Reviewers:
Pull Request: https://github.com/llvm/llvm-project/pull/193265
net/libngtcp2-boringssl: Add libngtcp2-boringssl
ngtcp2 project is an effort to implement QUIC protocol which is now being
discussed in IETF QUICWG for its standardization.
This port provides the crypto helper library for BoringSSL backend.
(cherry picked from commit 78e392c02a614e6cea1e6933980317a7221284c6)
tests/sys/netinet/tcp_hpts: Make a socket available in mock inpcbs
After commit 9b76228006d8, tcp_hptsi() dereferences inp_socket in order
to get the inpcb's VNET. This means that mock inpcbs created by the
HPTS test fixture must set inp_socket. Also set the current VNET there;
previously, it was NULL, and this was not noticed since VNET_DEBUG is
disabled even in debug kernels.
Fixes: 9b76228006d8 ("inpcb: retire inp_vnet")
epoch: Don't idle CPUs when there's pending epoch work
The epoch(9) subsystem implements per-CPU queues of object destructors
which get invoked once it is safe to do so. These queues are polled via
hardclock().
When a CPU is about to go idle, we reduce the hardclock frequency to 1Hz
by default, to avoid unneeded wakeups. This means that if there is any
garbage in these destructor queues, it won't be cleared for at least 1s
(and possibly longer) even if it would otherwise be safe to do so.
epoch_drain_callbacks() is used in some places to provide a barrier,
ensuring that all garbage present in the destructor queues is cleaned up
before returning. It's implemented by adding a fake destructor in the
queues and blocking until it gets run on all CPUs. The above-described
phenomenon means that it can take a long time for these calls to return,
even (especially) when some CPUs are idle. This causes long delays when
destroying VNET jails, for instance, as epoch_drain_callbacks() is
invoked each time a network interface is destroyed.
[11 lines not shown]
[CIR] Implement variably modified type parameter handling (#193072)
CIR was missing checks for variably modified types in its function
handling, so if one of the function arguments was a variable-length
array, we weren't recording the VLA size and hitting an assertion when
we later try to retrieve the VLA size from our map. One dimensional VLAs
are passed as pointers to the array type rather than as variably
modified types, so that didn't trigger the error.