[CIR][CodeGen] Share isStandardLibraryRTTIDescriptor
Deduplicates `isStandardLibraryRTTIDescriptor` between CIR and classic CodeGen
into `ItaniumCXXABIUtils.h`, taking the classic implementation. The two copies
have been equivalent since #227781 filled in the builtin types CIR was missing.
Assisted-by: Claude Code (Claude Fable 5.1).
[CIR][CodeGen][NFC] Share canUseSingleInheritance
Deduplicates `canUseSingleInheritance` between CIR and classic CodeGen into
`ItaniumCXXABIUtils.h`.
Assisted-by: Claude Code (Claude Fable 5.1).
[CIR][CodeGen][NFC] Share requiresAMDGPUProtectedVisibility
Deduplicates `requiresAMDGPUProtectedVisibility` between CIR and classic CodeGen
into `TargetUtils.h`. The shared version takes a bool for "currently hidden" in
place of the `llvm::GlobalValue` and `cir::VisibilityKind` the two callers
passed.
Assisted-by: Claude Code (Claude Fable 5.1).
[CIR][CodeGen][NFC] Share hasExtraNeonArgument
Deduplicates `hasExtraNeonArgument` between CIR and classic CodeGen into
`TargetUtils.h`.
Assisted-by: Claude Code (Claude Fable 5.1).
[CIR][CodeGen][NFC] Share the Arm SME inlinability check
Deduplicates `ArmSMEInlinability` and `getArmSMEInlinability` between CIR and
classic CodeGen into a new `TargetUtils.h`.
Assisted-by: Claude Code (Claude Fable 5.1).
[CIR][CodeGen][NFC] Retire the CodeGenUtils.h catch-all header
Moves the last helpers out of `CodeGenUtils.h` into `ClassUtils.h`,
`ModuleUtils.h`, `TargetUtils.h` and `FunctionUtils.h` (`checkTargetFeatures`,
since it came from CodeGenFunction.cpp) and deletes the header. Only moves code
already on main, so it can be dropped on its own.
Assisted-by: Claude Code (Claude Fable 5.1).
[CIR][CodeGen] Share the EH personality selection logic
Deduplicates the EH personality selection (`getEHPersonality`,
`getCXXEHPersonality`) between CIR and classic CodeGen, taking the classic
implementation. CIR's copy lacked the z/OS, Wasm and GNUstep-on-CygMing cases;
none are reachable in CIR today, so no test changes.
Assisted-by: Claude Code (Claude Fable 5.1).
[CIR][CodeGen][NFC] Share the Itanium __vmi_class_type_info flags computation (#227256)
Deduplicates the `__vmi_class_type_info` and `__base_class_type_info` flags and
`computeVMIClassTypeInfoFlags` between CIR and classic CodeGen into
`ItaniumCXXABIUtils.h`.
Assisted-by: Claude Code (Claude Fable 5.1).
[OpenMP] Tile/stripe followed by reverse (#222401)
`Clang` rejects `#pragma omp tile` or `#pragma omp stripe` immediately
followed by `#pragma omp reverse` on the same loop nest, emitting the
error:
`error: statement after '#pragma omp tile' must be a for loop`
See https://godbolt.org/z/d1fsfaMe9
The correct behavior is to accept it. Bare`reverse`, bare
`tile`/`stripe`, and `tile` followed by `stripe` all work. Only
`tile`/`stripe` and `reverse` fails.
This PR fixes the issue.
interfaces: remove PPTP support; closes #10973
To ease future migrations from PPP to MVC/API and reduce the
config field "localip" misuse we want to phase out PPTP and
reduce complexity of the implementation.
While L2TP may be still around the PPTP tunneling is very likely
not used anymore. A bit of a message to everyone still using this.
Only one way to find out.
[AArch64] Use multi-vector intrinsics for masked load/store users of predicate-as-counter
If the user of the original wide mask is a masked load or store
intrinsic (matching the element size of the predicate-as-counter),
rewrite it directly to a masked multi-vector load/store.
This avoids materializing the vector mask and is easier to handle here
than later (e.g. in SelectionDAG), since we do not need to match the
concatenation of all `pext` segments of the predicate-as-counter.
Assisted-by: Codex
[AArch64] Avoid materializing full masks for extractelement users of predicate-as-counter
If the user of the original wide mask is an `extractelement` and the
index is known to be within the first segment of the
predicate-as-counter, replace it with `extractelement(pext(counter, 0))`.
This avoids materializing the vector mask and produces a form that can
be folded into a conditional branch when the predicate-as-counter is
produced by a `whilelo`.
Assisted-by: Codex
NAS-144146 / 28.0.0-BETA.1 / Fix interface.nic_attach_users crash when VMs or containers exist (#19900)
## Problem
`nic_attach_users`, added in 4fb2e51a1b, reads `vm.query` and
`container.query` results as dicts. Both are typesafe services on
master, so internal calls return Pydantic models and subscripting them
raised a `TypeError`. As soon as any VM or container existed,
`interface.bridge_members_choices` failed, and so did creating or
updating a bridge with `bridge_members`.
## Solution
Read the NIC devices straight from the `vm.device` and
`container.device` tables with `datastore.query`. Only persisted device
attributes and the owner's name are needed, so this skips the per-VM
libvirt status lookup that the query services do, and behaves the same
regardless of how those services shape their results. Rows whose
attributes cannot be decrypted, or whose owner is missing, are skipped.
[Offload] Avoid global mutex destructors (#221471)
Replace namespace-scope std::mutex instances that trigger
-Wglobal-constructors with destruction-free storage.
This allows the offload libraries to build with
-Werror=global-constructors.
ofw: bool-ify OF_hasprop()
Adjust the function signature and the few callers that don't treat it
this way already.
This is style only; no functional change intended.
Reviewed by: andrew
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D56203
(cherry picked from commit b60cd486a652f0427e525b4482ac598be5460459)
kern: ofw: provide ofw_bus_destroy_iinfo to teardown interrupt-map
For symmetry with ofw_bus_setup_iinfo, the next commits will use it to
properly cleanup on failure in bcm2838_pci.
Reviewed by: andrew
(cherry picked from commit b230a7b9a52c0fc948f4f1dcd1225a94674073f6)
NAS-144121 / 28.0.0-BETA.1 / Be strict when replicating security settings to HA standby (#19895)
New `async with ha_synchronization` block should wrap all
security-related settings change. If HA is configured, it ensures, that
HA is healthy before applying the changes. All the changes are applied
synchronously: the block exits successfully only when the database is
replicated and services are reloaded.
HA-related errors return dedicated `ENOLINK` error code. UI can retry
the operation using `force: true` API option.
---
Bug: password authentication was enabled _globally_ when 2FA was enabled
for just one user. This will need backporting to 27.0.0.
Every combination of password/2FA settings is now tested using
`paramiko` on both active and standby nodes.
[3 lines not shown]
AMDGPU/GlobalISel: Fix selecting i16 sext atomic loads on gfx6/gfx7 (#229723)
An atomic global sextload from i16 to i32 was incorrectly matched to
buffer_load_sbyte. The correct pattern to buffer_load_sshort is already
there, so remove the incorrect duplicate which was arbitrarily preferred.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[offload][omp] Load and resolve device binaries through liboffload
Migrate DeviceTy::loadBinary and global/kernel symbol resolution off
GenericPluginTy::load_binary/get_global/get_function onto liboffload's
Program/Symbol API, encapsulated in a new ProgramTy abstraction that wraps
an ol_program_handle_t. Kernel symbol resolution still needs the plugin's
opaque GenericKernelTy* handle for the legacy launch path, obtained via a
temporary __ol_tgt_GetKernelFromSymbol helper rather than new public
liboffload API surface. Removes the now-dead __tgt_device_binary type and
the corresponding GenericPluginTy methods and exports entries.
[AArch64][FMV] Skip unreachable versions before emitting feature checks (#229120)
Currently there are checks emitted for unreachable features whose
results are then ignored. This results in a lot of unnecessary IR being
emitted. This patch removes that code, by moving the check for
unreachable version to the top of the loop.