virtual_oss(8): Make sndstat FD global
There is no reason to have per-profile copies, plus this way we open
/dev/sndstat multiple times if more than 1 profile is created.
Also close the FD on exit to avoid leaking.
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Reviewed by: jrm
Pull-Request: https://ron-dev.freebsd.org/FreeBSD/src/pulls/41
virtual_oss(8): Properly cleanup cuse(3)virtual_oss(8) does not currently keep track of the cuse(3) it creates,
nor does it destroy any of them on exit, except for the control device.
This is harmless if virtual_oss(8) is killed after all audio streams
have been shut down, but if it's killed during I/O, the process hangs
and/or goes into uninterruptible sleep state.
To fix this, have pointers to all cuse(3) devices, and explicitly
destroy them on exit. Also make sure we don't leak memory in
dup_profile().
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Reviewed by: jrm
Pull-Request: https://ron-dev.freebsd.org/FreeBSD/src/pulls/41
[LoopFusion] Drop duplicate write-write dependence check (NFC) (#203173)
`dependencesAllowFusion()` re-tested every FC0-write vs FC1-write pair
in the second loop nest, duplicating the checks already done in the
first. Iterate only the remaining FC0-read vs FC1-write pairs; the set
of checked dependences (W0xW1, W0xR1, R0xW1) is unchanged.
[OpenACC][flang] Emit NYI when unstructured loops are associated with OpenACC directives
When an unstructured loop is associated with a loop or a combined
directive, we emit an unstructured CFG for the loop's logic nested
within the OpenACC op. This effectively serializes the nested loop on
the device which is not desirable. For now, emit NYI's while working on
a longer-term solution.
The NYI is restricted to the cases where the loop will be lowered with
`independent` parallelism semantics for the default device_type -- i.e.,
the user has explicitly promised the loop is parallel. This covers:
- combined `acc parallel loop`,
- standalone `acc loop` inside `acc parallel`,
- orphan `acc loop` inside a non-`seq` acc routine,
- explicit `independent` clause.
For `auto` (`acc kernels loop` and `acc loop` inside `acc kernels`) and
for `seq` (`acc serial loop`, `acc loop` inside `acc serial`, explicit
`seq`, or orphan inside a `seq` routine), the user has not made a
[4 lines not shown]
Convert FTP plugin to typesafe pattern
## Context
The `ftp` plugin was still dict-based: a `SystemServiceService` with a string `datastore_extend`, a `do_update` returning a plain dict, and consumers/mako templates reading config via `cfg['key']`. This moves it to the typesafe pattern (lean service class delegating to a `SystemServicePart`, `generic = True`, typed `config()`/`do_update`, `check_annotations=True`, `call2`), matching the converted `ups` plugin.
## Solution
- **New `plugins/ftp/` package** replacing `plugins/ftp.py` and `plugins/ftp_/`: `__init__.py` holds the lean `FTPService` (registered in `main.py`'s `ServiceContainer`), `config.py` holds `FTPModel` + `FTPServicePart` (extend/validate/do_update), and the port/cert attachment delegates plus the `connection_count` helper move in alongside. The old compound `ftp_/status.py` service is folded into `connection_count` as a `@private` method.
- **API models** (`api/v27_0_0/` only): split the legacy `@single_argument_args('ftp_update')` form into the standard `FTPUpdate` / `FTPUpdateArgs(data=...)` / `FTPUpdateResult` shape; the wire API is unchanged.
- **Consumers fixed for the dict→model change:** `usage.py` switches to `call2` + attribute access, and the three proftpd mako templates (plus a dead line in `ftpusers.mako`) move from `ftp['x']` to `ftp.x` now that `ftp.config` returns an `FTPEntry`.
- **`ServicePortDelegate.config()`** now normalizes a Pydantic config to a dict (`isinstance` / `model_dump`), the same dispatch the certificate delegate already does. Without this, the FTP port delegate hit `'FTPEntry' object has no attribute 'get'` whenever `port.validate_port` ran (e.g. on `ftp.update`).
- Added type annotations to `resolve_hostname`/`validate_port` in `async_validators.py` so the typed FTP part can call them, and added `plugins/ftp/` to the mypy workflow.
[libc++] Hoist <compare> outside the threads guard in <thread> (#202535)
The standard mandates [thread.syn] include <compare> as part of
<thread>'s synopsis. This is a standards-mandated dependency, not a
thread-feature dependency, so it should be visible regardless of
_LIBCPP_HAS_THREADS.
This matches how we handle standard-mandated includes elsewhere, see for
example #134877.
[mlir][OpenMP] Translate reductions on taskloop
Add LLVM IR translation for reduction and in_reduction clauses on omp.taskloop.context.
For taskloop reduction, emit the implicit taskgroup reduction setup and map each generated task to runtime-provided private reduction storage through __kmpc_task_reduction_get_th_data. For in_reduction, use the same runtime lookup path with a null descriptor to join an enclosing task reduction context.
Unsupported byref, cleanup, and two-argument initializer forms remain diagnosed.
Add MLIR translation tests for the supported taskloop reduction and in_reduction cases.
[RISCV] Set CostPerUse to 1 only when optimizing for size (#201501)
We saw some regressions because of bad RAs as the cost of registers
beyond x8-x15 are bigger. This is why `DisableCostPerUse` was added
in https://github.com/llvm/llvm-project/issues/83320.
In this PR, we change it to set `CostPerUse=1` only when optimizing
for size.
Code size increases less than 0.1% in llvm-test-suite.
Reland emitc lower multi return functions (#203026)
Reland #200659 reverted by #202911.
Fixed GCC 7 func-to-emitc build: Use the adaptor operand types
when creating the multi-return struct type instead of relying on an
implicit conversion from ValueRange to TypeRange.
Failed buildbot:
https://lab.llvm.org/buildbot/#/builders/116/builds/29302
Assisted-by: Copilot
archivers/quazip: Update to 1.7.1
- Add missing Qt6Core5Compat to pkgconfig file for Qt6 flavor.
(cherry picked from commit 84e4c46e239fccc18d45da133bfa7422955c1c4f)