[VPlan] Check enclosing region first (NFC). (#216676)
Check cheaper getEnclosingLoopRegion() first; it only walks the parent
chain, while getVectorLoopRegion() traverses the plan's top-level
blocks.
net/frr: move peer group policy into address families
Peer groups gained an explicit address family selector, but only the
activation command was rendered inside the selected address-family block.
Policy-related settings such as prefix-lists, route-maps, next-hop-self
and default-originate were still emitted in the global peer group section.
This caused IPv6-only peer groups to be activated under IPv6 while their
policy configuration was generated outside of the IPv6 address-family
context, where it would not apply as expected.
Move these AF-scoped peer group settings into the address-family loop and
keep only session-level settings in the global peer group block. Add small
helpers for prefix-list and route-map attachment rendering so the same
logic can be shared between normal neighbors and peer groups.
Refuse snapshot rollback up front when newer snapshots are blocked
## Problem
Rolling a dataset back to an older snapshot crashed with a raw traceback whenever a newer snapshot had a dependent clone. Two separate failures were in play: `clone_rsrc.destroy()` does not exist on any pylibzfs resource type, so it raised `AttributeError`, which is not a `RuntimeError` and so escaped both surrounding handlers; and `lzc.destroy_snapshots()` raises `ZFSCoreException`, a sibling of `ZFSException` rather than a subclass, so the handler wrapping it never fired. There was also no pre-flight of any kind, so nothing could refuse cleanly — and because destroy failures were silently swallowed and the loop continued, a failed destroy left the rollback to fail later with a message telling the user to pass a flag they had already passed.
## Solution
- **Destroy clones through the handle.** `tls.lzh.destroy_resource(name=...)` replaces the non-existent resource-level `destroy()`, matching how the destroy path already does it.
- **Catch both exception families.** `lzc.destroy_snapshots()` failures are now caught alongside `ZFSException` and converted, rather than escaping as a raw traceback.
- **Refuse before destroying anything.** A new pre-flight walks the whole dataset set — including the full `recursive_rollback` tree, before the fan-out loop rather than inside it — and collects every blocker it can see: dependent clones when `recursive_clones` is not set, holds in all cases, and clones that cannot be destroyed non-recursively because they have children or snapshots of their own. Previously a blocker on a child was discovered only after the parent had been irreversibly rolled back. This is fail-first, not atomic: a clone or hold created between the pre-flight and the destroy still fails mid-loop, and only a concurrently pruned snapshot (ENOENT) is tolerated.
- **Typed errors at both boundaries.** Blockers raise `ZFSRollbackBlockedException`, mapped to `EBUSY` with a message naming each blocking snapshot and what blocks it. `pool.snapshot.rollback` had no exception mapping at all and leaked every impl failure as an untyped traceback; it now mirrors `zfs.resource.snapshot.rollback`.
- **`force` now means how forcefully, not whether.** Clones are always unmounted before destroy, since `zfs_destroy()` does not unmount and a mounted clone could never be destroyed otherwise; `force` selects a forced unmount, matching the `zfs destroy` CLI. Unmount no longer requests a key unload, matching what the CLI's rollback path does.
Adds unit coverage for each defect and the pre-flight, plus integration coverage for clone-present, nested-clone, hold-present, and cross-dataset cases. `pool.snapshot.rollback` had no api2 coverage before this.
Newer bookmarks remain unhandled: pylibzfs exposes no bookmark primitives, so a newer bookmark still fails the rollback with an empty conflict list. That needs a pylibzfs change first and is tracked separately.
[NewPM] Port ImplicitNullChecks to the new pass manager
Adds a newPM pass for ImplicitNullChecks.
- Refactors base logic into an ImplicitNullChecks class
- Renames old pass with the "Legacy" suffix
- Adds the new pass manager pass ImplicitNullChecksPass
- Updates MachinePassRegistry.def, PassBuilder, and CodeGenPassBuilder
- Updated existing .mir tests to also test with the New Pass Manager
TAG=agy
CONV=f54ff826-1008-4e8c-9be5-0364adbe3923
SPIRV: Use mi_match in combiner match functions
Convert some simple cases away from getVRegDef + opcode
checks which don't require new matchers.
Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
AArch64: Use mi_match for G_CONSTANT operand check in RegisterBankInfo
Replace the getVRegDef + G_CONSTANT opcode check in the build_vector
all-constant-operands test with an m_ICst match. NFC.
Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
system: add mldsa44-ed25519 to OpenSSH host keys
We need to add it to the default PubkeyAcceptedAlgorithms so that
it works out of the box. The GUI specified value can select it
but overwrites any default changes we've done so it's safe to use.
[Clang][Frontend] Fix fix-it size overflow in emitted .dia (#216075)
When fix-its are emitted into a .dia, we previously stored the fix-it
text in a blob of arbitrary size, but the size of the text was stored in
a separate 16 bit field. For really large fix-its, the size won't fit it
those 16 bits, and the compiler crashes.
Switch to a variable length encoding of the fit-it size. This is similar
to this issue:
https://github.com/llvm/llvm-project/commit/e26aea5b290165f3bccffab662a706d4a56f7540
We also remove a hard coded check in the clang library used to load .dia
files that failed for fix-its whose size doesn't fit in 16 bits.
Generated with codex
Co-authored-by: Nuri Amari <nuriamari at fb.com>
(cherry picked from commit bb123b2208060bf3ec8a5f22f2111bd194c4ad4d)
[sanitizer] Skip hanging tests on NetBSD (#216712)
Several sanitizer tests hang indefinitely on NetBSD:
```
MemorySanitizer-Unit :: ./Msan-x86_64-Test
MemorySanitizer-Unit :: ./Msan-x86_64-with-call-Test
MemorySanitizer-X86_64 :: zero_alloc.cpp
ThreadSanitizer-x86_64 :: signal_cond.cpp
libFuzzer-x86_64-default-NetBSD :: reload.test
```
All of them loop and don't time out, so they need to be terminated
manually for `ninja check-all` to complete. To avoid this, this patch
skips the affected tests or subtests. Unfortunately, the Msan unit tests
still hang on exit in `__cxa_finalize` even if all subtests are skipped
with `llvm-lit -gtest_filter=-*`.
Tested on `x86_64-pc-netbsd11.0`, `x86_64-pc-freebsd15.1`, and
[3 lines not shown]
GlobalISel: Add m_PosZeroFP matcher and use it in AArch64 selector (#216925)
Add an FP-constant predicate matcher m_PosZeroFP, mirroring the IR
PatternMatch helper, and use it in emitFPCompare instead of binding the
ConstantFP just to test for +0.0. NFC.
Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
[clang-format] Fix short functions with nested braced-init (#213550)
Fixes #213286.
Keep short functions on one line when their return statement contains
nested braced initializers.
The closing brace now checks the kind of its matching opening brace, so
braced-init lists are allowed while structural
braces still prevent merging.
Tests:
- `FormatTest.CustomShortFunctionOptions`
- `FormatTest.AllowShortRecordOnASingleLine`
- full `FormatTests` suite (1275 passed)
Signed-off-by: Gaurav Chaudhary <chaudharygaurav2004 at gmail.com>
(cherry picked from commit e98256cc6abdc97701a3b1fa2588e2628180ead2)