[Alignment] Add a static function to construct an `Align` from power-of-2 values (#230920)
Many call sites of the `Align` constructor uses it as `Align(1ULL << n)`, and
the constructors takes the `Log2` of the value. Add a new static function to
allow `Align::fromLog2(n)` and update old call sites. This avoids the
unnecessary `Log2(1ULL << n)` computations when constructing `Align`s.
[SLP]Fix miscompile of absorbing lanes in flattened chains
The operand columns, peeled while flattening the associative chains,
modeled the lane with the absorbing constant as op(C, poison). Such
lanes belong to the real instructions of the flattened node, so the
poison operand is not frozen there and the lane becomes poison. Keep the
identity as the other operand for the peeled columns.
Follow-up to #228872.
Reviewers:
Pull Request: https://github.com/llvm/llvm-project/pull/230959
[clang] Do not compute typo-correction suggestions for disabled diagnostics (#209694)
While benchmarking I noticed that Boost.MPL compiles with ~1.2% more
instructions
after #140629.
clang spends a fair amount of time computing typo-correction
suggestions for diagnostics that are never emitted, for example Boost
doesn't contain any
typos, so all of this work produces nothing.
We can easily avoid this overhead by checking `isIgnored()` before
computing
suggestions, and by not treating known non-conditional directives as
typos.
You can see the improvement here:
https://llvm-compile-time-tracker.com/compare.php?from=49de424f45389cb757c3cc8c50daf38d024e2314&to=89a68cd24f9fabf15897d7b20b77bb5b0bfb9c16&stat=instructions%3Au
[MISched] Unify SUnit formatting among users (#229756)
This patch migrates diverging SUnit formats, that form a minority in the
codebase, to a single unified format dictated by the new SUnit's
operator<<.
Make remaining async zfs.resource methods sync
## Problem
When dataset logic moved into zfs.resource, the attachment and process-killing methods were brought over as async to keep that diff small, unlike the rest of the namespace. The attachment delegate `validate_set`/`after_set` hooks were also async even though their only caller is the sync `zfs.resource.set`, so every hook bounced from the set thread onto the event loop, and SMB's hook went back out to another thread to query attachments.
## Solution
- **Sync zr methods:** attachments, attachments_with_path, kill_processes, stop_attachment_delegates and the delegate registry accessors are sync. Delegate coroutines run through `context.run_coroutine` (one hop per call) and `kill_processes` drives `service.control` jobs with `call_sync2(...).wait_sync()`. `processes_using_dataset_tree` is sync as well, with `pool.processes` running it via `to_thread`.
- **Sync set hooks:** `validate_set`/`after_set` are plain methods on the delegate base and in the SMB, iSCSI, NVMe-oF and VM delegates, called inline by `zfs.resource.set`. Registering a delegate whose hooks are still coroutine functions raises, since a leftover `async def` would otherwise silently skip validation.
- **Batched destroy:** `zfs.resource.destroy` deletes attachments through a single sequential coroutine instead of two loop hops per delegate, keeping delegate order and abort-on-first-error.
- Unlock iterates the start-ordered delegates directly instead of calling through the service.