[LifetimeSafety] Enable C support by default under -Wlifetime-safety (#224028)
This PR extends the lifetime safety analysis to C. When the analysis is
enabled with `-Wlifetime-safety`, it now also runs on C code without the
extra `-fexperimental-lifetime-safety-c` flag.
I have renamed `-fexperimental-lifetime-safety-c` to
`-flifetime-safety-c` since it is on by default from now on. The
`-fno-lifetime-safety-c` flag disables the analysis for C. I have
updated the documentation and the release notes and rewrote the RUN
lines of the test cases that used the old flag.
Keep thick zvols thick when they are grown
Thick zvols are created with a refreservation equal to their volsize, but
libzfs only grows a refreservation along with the volsize when it matches
the value libzfs computes itself (refreservation=auto, which is what
`zfs create -V` uses). Growing such a zvol therefore left the old
reservation behind: the zvol kept showing as thick while only part of it
was reserved.
When pool.dataset.update grows a zvol that reserves exactly its volsize,
and the request doesn't set a refreservation itself, also set
refreservation=auto. libzfs computes the reservation for the new size and
rolls the volsize back if the pool can't back it. Read-only and locked
zvols are skipped, since ZFS would still apply the new reservation when it
refuses the resize. Creating thick zvols with auto directly needs libzfs
zfs_create() to resolve it, so leave a TODO at both create paths.
[AMDGPU] Fold sudot intrinsics with a zero multiplicand
Replace sudot4 and sudot8 with their accumulator when either
multiplicand is zero.
For example:
```
sudot4(sign0, x, sign1, 0, acc, clamp)
->
acc
```
[AMDGPU] Canonicalize constant operands of sudot intrinsics
Move a constant multiplicand and its sign flag to the second operand.
For example:
```
sudot4(true, 1, false, x, acc, clamp)
->
sudot4(false, x, true, 1, acc, clamp)
```
[DAG] SimplifySetCC - adjust setcc result type when peeking through truncates (#226422)
For the "(setcc (trunc x) (trunc y)) -> (setcc x y)" fold with non vXi1
cmp result type, make sure we adjust the type and then trunc/extend it
correctly using BooleanContent.
Fixes #226365
[mlir] Avoid rewriting unreachable blocks in the greedy driver
A rewrite can disconnect a block after the iteration's initial CFG sweep.
Track reachability through rewriter notifications and skip worklist
operations in unreachable blocks until the next iteration removes them.
Cache reachability per region and compare final successors after each
rewrite. Preserve the cache for successor-equivalent changes, added edges,
and block merges that keep surviving blocks reachable. Recompute for other
CFG changes, including entry changes and cross-region block moves.
Keep cache updates separate from reachability queries, returning failure
when a full traversal is required. Collect each successor set once for
validation and retain compact vector snapshots in the cache. Entry-block
queries return before cache lookup or CFG traversal.
Cover inserted and redirected blocks, blocks connected before rewrite
completion, nested regions, block moves and merges, and explicit op lists.
Use observer diagnostics to check whether affected operations are processed
[17 lines not shown]
[flang][OpenMP] Improve checks of ORDERED clause
Make the checks version-sensitive.
This adds some diagnostics that effectively replace existing ones.
The old ones will be removed in a later PR, for the time being both
will be shown.
[mlir] Avoid rewriting unreachable blocks in the greedy driver
A rewrite can disconnect a block after the iteration's initial CFG sweep.
Track reachability through rewriter notifications and skip worklist
operations in unreachable blocks until the next iteration removes them.
Cache reachability per region and compare final successors after each
rewrite. Preserve the cache for successor-equivalent changes, added edges,
and block merges that keep surviving blocks reachable. Recompute for other
CFG changes, including entry changes and cross-region block moves.
Keep cache updates separate from reachability queries, returning failure
when a full traversal is required. Collect each successor set once for
validation and retain compact vector snapshots in the cache. Single-block
regions return before cache lookup or CFG traversal.
Cover inserted and redirected blocks, blocks connected before rewrite
completion, nested regions, block moves and merges, and explicit op lists.
Use observer diagnostics to check whether affected operations are processed
[16 lines not shown]
graphics/linux-slang: Add new port
Slang is a shading language that makes it easier to build and maintain large
shader codebases in a modular and extensible fashion, while also maintaining
the highest possible performance on modern GPUs and graphics APIs. Slang is
based on years of collaboration between researchers at NVIDIA, Carnegie Mellon
University, Stanford, MIT, UCSD and the University of Washington.
The Slang shading language is designed to enable real-time graphics developers
to work with large-scale, high-performance shader code.
https://shader-slang.com/
NAS-144052 / 26.0.0-RC.1 / Only use `create_task` from main loop
`loop.create_task` is not thread-safe
Original PR: https://github.com/truenas/middleware/pull/19865
Co-Authored-By: Claude Opus 5 (1M context) <noreply at anthropic.com>
ARM: Use divmod type signatures from RuntimeLibcallsInfo (#217869)
Start moving towards an API to emit calls from RuntimeLibcallsInfo's
knowledge about the type signature of a function instead of manually
computing an IR type from the EVT of the operation.
Also change the swap of arguments to be based on the libcall impl,
rather than the ABI since it's logically a property of the function
itself.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
NAS-144052 / 26.0.0 / Only use `create_task` from main loop
`loop.create_task` is not thread-safe
Original PR: https://github.com/truenas/middleware/pull/19865
Co-Authored-By: Claude Opus 5 (1M context) <noreply at anthropic.com>
[mlir] Avoid rewriting unreachable blocks in the greedy driver
A rewrite can disconnect a block after the iteration's initial CFG sweep.
Track reachability through rewriter notifications and skip worklist
operations in unreachable blocks until the next iteration removes them.
Cache reachability per region. Compare the final successors of changed
blocks after each rewrite, preserving the cache for successor-equivalent
changes and block merges that keep surviving blocks reachable. Recompute for
other CFG changes. This avoids repeated full CFG scans during branch
canonicalization.
Single-block regions return before cache lookup or CFG traversal. Before the
cache bookkeeping simplification, in the same Release build, canonicalizing
32,000 sibling single-block regions took 22.8 ms versus 21.9 ms with the
parent driver. With 16,000 regions containing folds, the times were 35.7 ms
and 34.3 ms, respectively. Nesting to 256 levels showed no measurable
difference.
[23 lines not shown]
[clang][AArch64] Consolidate codegen tests for SVE's LEN intrinsics (#226131)
This patch completes the migration of the tests from:
* clang/test/CodeGen/AArch64/sve-intrinsics/acle_sve_len.c
to:
* clang/test/CodeGen/AArch64/sve/len.c
`len.c` covers all the cases previously tested by `acle_sve_len.c`.
However, unlike `acle_sve_dup.c`, it was only tested as C. Add `-x c++`
RUN lines to provide the equivalent C++ coverage, including lowering
via CIR.