unit: update docs for new coverage report options
Sponsored-by: TrueNAS
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Rob Norris <rob.norris at truenas.com>
Closes #18619
[clang][OpenMP] Improve loop structure for distributed loops
This is a part of a series of patches that rework OpenMP cross-team
reductions.
This patches wires the existing
`kmp_sched_distr_static_chunk_sched_static_chunkone` to be used by
CodeGen.
Example of the intended change of this patch:
```
target teams distribute parallel for reduction(+:s)
for (i = 0; i < N; i++) s += a[i];
```
Before:
```
__kmpc_distribute_static_init(91)
for (team_lb = team*nthreads; team_lb < N; team_lb += nteams*nthreads) {
[67 lines not shown]
18124 want test case for dladm create-vnic
Reviewed by: Bill Sommerfeld <sommerfeld at hamachi.org>
Approved by: Gordon Ross <gordon.w.ross at gmail.com>
[clang] fix getTemplateInstantiationArgs
This implements a new strategy for collecting the template arguments, by
relying on the qualifiers and template parameter lists to navigate the template
context of out-of-line definitions.
This greatly simplifies the signature of that function, by removing a bunch
of workarounds, and simpliffying a couple that weren't removed yet.
Since this now relies on qualifiers and template parameter lists,
this patch expends most of its effort making sure these are placed,
transformed and propagated to template instantiations.
Also makes the explicit specialization AST nodes stop abusing the template
parameter lists by storing it's own template parameter list, creating a
dedicated field for them, similar to partial specializations.
unit: support text & HTML targets; improve coverage rules
The main change is switching `unit-coverage` to run
scripts/coverage_report.pl, to get nice coverage summary output on the
commandline. The previous behaviour moves to `unit-coverage-html`.
Calls to lcov and genhtml are now silencing more warnings, and the
output file now gets branch coverage as well.
This should be compatible with both lcov 1.x and 2.x. It takes advantage
of the fact that 1.x is far more forgiving of both options it doesn't
understand, and of various kinds of "inconsistency" in the input data.
The rest is both simplifying and improving the rules. We keep the
coverage output around now, but still rebuild it if the binary changes.
The `clean` target now removes the coverage output too. And we use the
target name more often for building path names, as its far less noisy.
Sponsored-by: TrueNAS
[3 lines not shown]
[ExpandVariadics] Expand vaarg instructions (#201156)
Expand vaarg instructions within ExpandVariadics (Clang generally does
not emit these instructions but other front-ends may). This pass already
has all the necessary information to expand these instructions and doing
this in IR as part of this pass is simpler than lowering these
instructions during ISel after type legalization. This fixed a
type-mismatch bug in NVPTX.
coverage_report: produce nice text reports from lcov/geninfo tracefiles
Sponsored-by: TrueNAS
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Rob Norris <rob.norris at truenas.com>
Closes #18619
[SCEV] Fix ScalarEvolution::getBackedgeTakenInfo when L not found (#201502)
By the end of ScalarEvolution::getBackEdgeTakenInfo():
```
...
BackedgeTakenInfo Result = computeBackedgeTakenCount(L);
if (Result.hasAnyInfo()) {
// Invalidate any expression using an addrec in this loop.
...
}
return BackedgeTakenCounts.find(L)->second = std::move(Result);
```
BackedgeTakenCounts may no longer contain an entry for L, resulting in a
crash (https://github.com/llvm/llvm-project/issues/195176). This patch
fixes the issue by inserting the entry if it does not exist (and
otherwise keeping the same behavior).
[3 lines not shown]
Restructure alert plugin to the lean typesafe layout
## Problem
The alert plugin passed mypy but didn't follow the typesafe convention the other converted plugins use: the eponymous `alert` service lived in `alert.py` as an 1100-line `Service` with all logic, models, and helpers inline, `__init__.py` was empty, and the two sibling services each combined their service class and service part in one off-convention file.
## Solution
- Move `AlertService` into a lean `__init__.py` that exposes only the endpoint stubs; each delegates to plain functions in `lifecycle.py` / `runtime.py` / `oneshot.py` / `queries.py` that take `(context, state)`.
- Lift all mutable runtime state into a dedicated `AlertState` object (`state.py`) built once in `__init__`. Concurrency is intentionally unchanged — it still relies on the asyncio event loop plus the existing `process_alerts` job lock, with no new lock introduced.
- Pull the standalone pieces into `state.py`, `alert_classes.py`, and `serialize.py`, and split the siblings into `alertservice.py` / `alertservice_crud.py` and `alertclasses.py` / `alertclasses_config.py` to match the `*_crud.py` / `*_config.py` convention.
- Move the inline `AlertOneshotDelete` models into the API package, and update `main.py` imports plus the setup-ordering key (`alert.alert` -> `alert`, since `setup()` now lives in the package `__init__`).
[lldb][RISCV] Handle subsets of CSRs in RV32 core dump images (#142932)
The standard RISC-V ISA sets aside a 12-bit encoding space for up to
4,096 CSRs. However, many of these may remain unutilized and needn't be
saved in core dump images. To address this, we've come up with a new
note, _NT_CSREGMAP_, that saves subsets of CSRs as key-value pairs. This
change provisions support for handling the subsets of CSRs saved in
32-bit RISC-V core dump images by building the register information for
GPRs, FPRs, and CSRs dynamically.
Kindly refer to the corresponding topic ([Add RISC-V CSRs to core
dumps](https://discourse.llvm.org/t/add-risc-v-csrs-to-core-dumps/84348))
for additional details.
[mlir][acc] Add operation for private handle to memref (#201603)
This MR introduces a new operation `acc.unwrap_private` for creating a
pointer-like view of the `acc.private_type` handle. This operation will
be used when materializing `acc.private_local` into the memory view
needed to access the allocated private memory. This new operation is
just a simple cast and thus it gets ViewLikeOpInterface attached to it.
Additionally, `acc.private_type` is now treated as a pointer-like type
to ease conversions to other pointer-like types via
PointerLikeType::genCast.
pam: use open fd instead of path
Instead of performing multiple operations on the path name in
zfs_key_config_modify_session_counter() open the file once and
perform the fchown, fchmod, and openat on the open file handle.
Reviewed-by: Tony Hutter <hutter2 at llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Closes #18618
Use Docker Registries auth when checking for and pulling image updates
This commit fixes an issue where the image update checker and the middleware's own image pull ignored the credentials stored in Docker Registries, so updates to private images (e.g. ghcr.io) were never detected and pulls 401'd. We now thread the stored registry credentials through the manifest/token calls and the pull fallback so the bearer token carries read scope on private repos.
The registry-URI authority normalization that both paths rely on (stripping scheme/path/slash and collapsing Docker Hub aliases) was duplicated across app_registry and apps_images with slightly diverging alias sets, so it now lives in a single middlewared.utils.docker_registry helper that both import, with unit tests covering the normalization.
lang/algol68g: update to 3.12.2
Version 3.12.0-2, April/May 2026
* Move from domain xs4all.nl to new domain algol68genie.nl.
* Minor fixes.
Version 3.11.0-3, March/April 2026
* Improves STRING handling.
* Minor fixes.
* Documentation updates.
* Adds environment enquiry "eof char".
* Adds operators CEIL, FIX, FLOOR, FRAC and TRUNC.
[InstCombine] Avoid propagating invalid metadata in FoldOpIntoSelect (#199155)
Fixes #186471
FoldOpIntoSelect may create a select with a different result type from
the original instruction. The existing implementation blindly copied all
metadata from the original select, which could propagate invalid
type-specific metadata to the transformed instruction.
In particular, folding an fcmp over a floating-point select could copy
!fpmath metadata onto a non-FP select, producing invalid IR and causing
verifier failures.
This change preserves only metadata that remains valid for the
transformed select and propagates !fpmath only for FP-typed selects.
Debug locations are also preserved explicitly.
15209 Fix C++ math function visibility
Reviewed by: Bill Sommerfeld <sommerfeld at hamachi.org>
Reviewed by: Robert Mustacchi <rm at fingolfin.org>
Approved by: Hans Rosenfeld <rosenfeld at grumpf.hope-2000.org>
[AArch64][GlobalISel] Add select to and combines (#200131)
This adds combines for
// select c, x, 0 -> and c, x
// select c, 0, x -> and (not c), x
// select (not c), x, y -> select c, y, x
We need to freeze the value in the first two. The second is only
profitable if hasAndNot, so it excluded from all_combines.
https://alive2.llvm.org/ce/z/eG-aHT
This helps alleviate regressions when G_SELECT is made legal for vector
operations under AArch64. The AMD tests I am not sure about - let me
know if they look worse. The third combine is mostly useful
post-legalize.
NAS-141149 / 27.0.0-BETA.1 / Use Docker Registries auth when checking for and pulling image updates (#19059)
This commit fixes an issue where the image update checker and the
middleware's own image pull ignored the credentials stored in Docker
Registries, so updates to private images (e.g. ghcr.io) were never
detected and pulls 401'd. We now thread the stored registry credentials
through the manifest/token calls and the pull fallback so the bearer
token carries read scope on private repos.
The registry-URI authority normalization that both paths rely on
(stripping scheme/path/slash and collapsing Docker Hub aliases) was
duplicated across app_registry and apps_images with slightly diverging
alias sets, so it now lives in a single
middlewared.utils.docker_registry helper that both import, with unit
tests covering the normalization.
[RDA] Slightly optimize enterBasicBlock() (NFC) (#201608)
Instead of initializing LiveRegs and doing an elementwise std::max with
the first incoming predecessor, directly copy the data for the first
predecessor.