Fix negative time overflows in DDT pruning
- Account DDT entries created after prune start to histogram bin 0
(now) instead of the last one (long ago) due to negative overflow.
- Return error when requested to prune for more days than passed
since the epoch.
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Alexander Motin <alexander.motin at TrueNAS.com>
Closes #18886
[CIR] Accept fixed-width vectors in x86_64 callconv lowering
The CallConvLowering bridge rejects a vector in a parameter or return position,
so a function taking one fails the pass. It also never reads the AVX level,
which is what decides whether a vector wider than 128 bits reaches a register.
A vector is accepted now where the classifier and clang size it the same way,
which means a whole-byte element and a power-of-two width. Scalable vectors and
the other widths stay rejected. The module's AVX level comes from the target
ABI name, as CodeGenModule does. A classifier per level lets a target attribute
raise it for one function. An ABI older than the rule pins every function back
to the module's level. A direct call takes its callee's level, and an indirect
call the level of the function containing it.
CIRGen records target features on a definition but not on a declaration, so a
declaration carrying the attribute is classified at the module's level until
#214986 lands.
Assisted-by: Cursor / claude-opus-5
RuntimeLibcalls: Add sincos to the RISCV runtime libcall set
Inspection of the glibc sources suggests this is generically
available, with the target variance being for long double support.
The set of library functions is a large historical mess I'm attempting
to untangle. The traditional system had a large set of defaulted calls,
but sincos was a case which was explicitly enabled, and I'm assuming
riscv just never got around to adding it. It will be easier to
reorganize the library functions if synthetic architectural glibc
variance is eliminated.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
fwcam: release the IR DMA channel when starting the stream fails
Disabled the IR DMA channel on the error path, which clears the flag and
frees the descriptor blocks before the chunks go away.
Reviewed by: adrian
Differential Revision: https://reviews.freebsd.org/D58502
uvideo: limit isochronous transfers to 32 frames
Raising UVIDEO_NFRAMES_MAX from 40 to 128 in 3b6f833c95eb improved
throughput on xhci but made every camera on an ehci bus fail to
stream. Integrated webcams became unusable.
Measured on a MacBookPro9,2 with two ehci(4) FaceTime HD cameras and an
xhci(4) Logitech C920:
128 32
ehci, 12 captures 0 ok 12 ok
xhci 1920x1080 5 fps 5 fps
xhci 1280x720 10 fps 10 fps
Fixes: 3b6f833c95eb
Reviewed by: bapt
Differential Revision: https://reviews.freebsd.org/D58501
fwcamctl: remove, superseded by the video(4) interface
fwcam(4) no longer creates its own character device or implements the
FWCAM_* ioctls; it registers with video(4) and is driven through the
standard V4L2 interface on /dev/videoN.
Reviewed by: adrian
Differential Revision: https://reviews.freebsd.org/D58500
Tor Browser: fix rendering of File Chooser dialogs
This issue has been reported by quite a few people over the last two
years but I have not been able to pinpoint the cause.
Many thanks to c2qd for figuring it out and proposing a fix.
video: add generic video(4) capture framework
Add a new video(4) framework that provides /dev/videoN, buffer
management, mmap lifetime, and V4L2 ioctl dispatch for video capture
drivers. Hardware drivers implement struct video_hw_ops callbacks
and use video_buf_acquire/write/done to deliver frames.
Reviewed by: adrian
Differential Revision: https://reviews.freebsd.org/D58367
[Driver][KCFI] Do not invoke cc1 in Driver tests (#215072)
Fixes commit a44318b125ff to avoid using cc1 in Driver tests. Moves
argument validation to CodeGen, and always uses -### for Driver tests.
Build tested on x86_64-only and aarch64-only.
fish: update to 4.8.1.
fish 4.8.1 (released July 14, 2026)
===================================
Interactive improvements
------------------------
- On non-macOS platforms, :kbd:`alt-backspace`, :kbd:`alt-delete`, :kbd:`alt-left` and :kbd:`alt-right` operate on words again instead of tokens (:issue:`12122`) eliminating cross-platform differences in input handling.
- Builtin and function commands can now be colored separately via new variables :envvar:`fish_color_builtin` and :envvar:`fish_color_function` (:issue:`12837`).
- Add :doc:`fish_darcs_prompt <cmds/fish_darcs_prompt>` for `Darcs <https://darcs.net/>`__ repository status.
- Fixed a crash in ``commandline --current-process`` when the cursor is inside a ``&|`` pipe (:issue:`12868`).
- Since prompt marking (via :ref:`OSC 133 <term-compat-osc-133>`) causes an issue in `Konsole's <https://apps.kde.org/konsole/>`__ default configuration, prompt marking had been disabled for Konsole in 4.8.0.
Now the ``omit-term-workarounds`` :ref:`feature flag <featureflags>` can be enabled to enable prompt marking on Konsole again (:issue:`12859`).
Regression fixes:
-----------------
- (From 4.8.0) ``abbr --position=anywhere`` completions are no longer offered in argument position, to avoid cluttering the completion pager (:issue:`12838`).
- (From 4.8.0) ``pacman -Q`` short option completions (:issue:`12857`).
[59 lines not shown]
[SimplifyCFG] Avoid scanning functions multiple times in `removeUnreachableBlocks` (#213416)
`markAliveBlocks` scans instructions first to convert unreachable
instructions into `unreachable`, then marks alive successors. When
`iterativelySimplifyCFG` makes some changes, `removeUnreachableBlocks`
will be called again and scan the whole function again, even if
`iterativelySimplifyCFG` is unlikely to introduce new interesting
patterns.
This patch adds a new option `SimplifyInsts` to
`removeUnreachableBlocks`. When it is disabled, `markAliveBlocks` only
performs a BFS traversal.
Although it is possible to cause regressions
(unreachable-multi-basic-block-funclet.ll), it doesn't affect the
optimization result in practice:
https://github.com/dtcxzyw/llvm-opt-benchmark-nightly/pull/877
Compile-time improvement (approx -0.05%):
https://llvm-compile-time-tracker.com/compare.php?from=6a898832ff382b1a288f9eb3bc5cd1f37d0fc29f&to=565856d52880ed13c697e921f498dc400bb76c17&stat=instructions:u
[CIR] Let a record type mark what each member holds
A struct's `padded` bool only says that padding exists somewhere in the record.
It cannot say which member, and it cannot tell compiler-inserted padding from
storage the source declared that holds no ABI data, such as an unnamed
bit-field unit. Those two need to differ, because padding is reusable tail
padding and declared storage is not, so they give different data sizes.
Give each member a mark instead: unmarked for source data, `pad`, or `empty`.
A record is then empty for the ABI when no member holds data, which
`allMembersNonData` reads off the type.
This is the first of three PRs, and nothing populates the marks yet, so
`padded` stays for now. Retiring it before CIRGen fills the marks in would
make every struct claim it has no padding, and the x86_64 classifier would
start counting padding arrays as data with no diagnostic. The CIRGen PR comes
next, then the bool removal PR.
Assisted-by: Cursor / claude-opus-5