zstream: multithreading
This PR extends the `zstream_chain` mechanism introduced in #18509 to
include support for multithreading. It makes three main changes.
- It adds `zstream_queue.[ch]`, a generic FIFO queue with multiple
worker threads. This is a freestanding construct not directly tied to
ZFS or to the `zstream_chain` mechanism.
- It adapts `zstream_chain.[ch]` to allow both single-threaded and
multithreaded steps.
- It converts `zstream_fletcher4.[ch]` and `zstream_recompress.[ch]`
to use multithreading.
### Motivation
This patch significantly speeds recompression on modern CPUs. The
ultimate goal is to add a `zstream dedup` or `zstream pack` subcommand
[92 lines not shown]
[VPlan] Strip early-bail in noalias-check (#203936)
canHoistOrSinkWithNoAliasCheck currently bails eagerly when the
candidate memory location doesn't have a scope. This is unnecessary,
because the alias check automatically handles this: stripping this check
allows us to run the loop, which would never get to the alias check if
none of the recipes write to memory. The end result is that a read-only
FirstBB to LastBB ranges are determined not to alias with anything, even
if the scope metadata is absent, leading to licm-load-store
improvements.
[ConstFold] Eliminate some undef-folding (#207184)
The patch is merely a cleanup, with no real-world impact: undef-folding
is no longer useful these days.
Add a pre-filter to the breakpoint resolver overrides (#198845)
That way if an override only wants to override, say, file and line
breakpoints, it can say that when it registers itself, and we won't do
the work of creating the resolver and checking with it if the breakpoint
wasn't of the requested type.
---------
Co-authored-by: Jonas Devlieghere <jonas at devlieghere.com>
[clang] fix crash-on-invalid with deduction guides (#207263)
Fix crash when a template template parameter specialization is used as a
deduced type.
This is a regression since Clang 22, and this will be backported, so no
release notes.
Fixes #203261
[DirectX] Remove now unreachable blocks in dxil legalize (#207259)
I think when I first wrote
https://github.com/llvm/llvm-project/pull/193592, I had been under the
assumption that the dead block would be removed for us so the test and
pass did not check that the branch was removed in the pass.
This was a wrong assumption and we need to manually remove the blocks.
This change does so by invoking the helper to do so.
For context: this issue reappeared in the offload test suite after
https://github.com/llvm/llvm-project/pull/205433 landed because the loop
could no longer unroll and the dangling branch appeared.
Resolves: https://github.com/llvm/llvm-project/issues/207095
[lldb] Fix rpath settings for LLDB.framework in buildtree when using LLVM dylib (#207270)
The LLDB.framework location in your build tree relative to the LLVM
dylib differs from an actual installation (which may be located
elsewhere). As-is, we cannot even use the LLDB.framework in the
buildtree because resources in the framework fail to load the LLVM
dylib.
www/superhtml: explicitly set CPU
lang/zig default behaviour is to compile for the specific CPU on which it
runs. This specifies a more generic baseline CPU for amd64 and arm64.
Here's hoping that this fixes the issues observed with the binary in
current packages.
NAS-141651 / 26.0.0-RC.1 / Gate ZFS deduplication on pool creation (by sonicaj) (#19252)
This commit adds changes to extend the ZFS deduplication license gate to
pool creation, which previously let a pool's root dataset be created
with dedup enabled on a system that is not entitled to it. The check is
factored into a shared validate_dedup_license helper so pool.create and
the dataset create/update path enforce it identically and stay in sync.
Original PR: https://github.com/truenas/middleware/pull/19251
Co-authored-by: Waqar Ahmed <waqarahmedjoyia at live.com>
[libc] Make BigInt trivially constructible (#206277)
This makes BigInt trivially constructible and additionally fixes the
failures caused by the upcoming change in constexpr functions.