usb: xhci: allow up to 1s for SET_ADDRESS
Some devices take a little longer, and the spec doesn't really seem to
mandate a maximum. The common path in usbd_req_set_address() has
already been bumped to 1s and I have a headset (Logitech H390) that does
need a little bit longer, so let's match it in xhci.
Reviewed by: aokblast
Differential Revision: https://reviews.freebsd.org/D58717
[CIR] Enable x86_64 calling-convention lowering by default (#215026)
x86_64 calling-convention lowering has been opt-in behind
`-clangir-enable-call-conv-lowering` since it landed, so nothing reaches
the pass unless a test asks for it. The ClangIR default path therefore
emits high-level signatures that do not match SysV: a 32-byte struct
return stays first-class instead of going out through `sret`, and a
one-eightbyte struct argument is passed as a record instead of being
coerced to `i64`.
This change turns the pass on by default for x86_64 and renames the flag
to a `BoolFOption` pair, `-fclangir-call-conv-lowering` and
`-fno-clangir-call-conv-lowering`. The last flag on the command line
wins, so a build can disable the pass globally and re-enable it for one
translation unit.
Flipping the default breaks 147 of 949 CIR tests. 37 tests are CHECK
regenerations where lowering moved toward classic CodeGen. 110 tests are
quarantined by adding the disable flag to the RUN lines that turn the
[12 lines not shown]
[SimplifyLibCalls] Shrink llvm.sincos.f64 to llvm.sincos.f32 (#211218)
The double -> float shrink in LibCallSimplifier::optimizeCall only knows
about Intrinsic::sin and Intrinsic::cos, so once InstCombine combines a
sin/cos pair into llvm.sincos the fpext/fptrunc pair is left in place
and the work is done at double precision.
Handle Intrinsic::sincos too, behind the same UnsafeFPShrink gate. It
needs its own helper rather than optimizeDoubleFP because sincos returns
a struct: the results are read back through extractvalue instead of
being used directly, and the narrowed call has to be rebuilt as a
struct. InstCombine folds the resulting extractvalue/insertvalue pairs
away, so the sin/cos pair in the reported case now ends up as a single
llvm.sincos.f32 call.
NOTE: reported as a 2-2.5% regression on SPEC17 526.blender with -flto
-ffast-math on neoverse-v2 in #194616.
Assisted-by: Opus 4.8
[libc++][CI] Add a cron job to trigger benchmarking jobs (#212859)
This patch introduces a GitHub workflow that runs on a schedule and
determines which benchmarking jobs to trigger to fill the LNT instances
with performance data.
As a drive-by, it also consolidates the information describing libc++
LNT machines into a single JSON file.
The added cron workflow will run every hour, but since the benchmarks
typically take more than an hour to run, it is expected that some of
those triggers will not actually trigger new jobs.
[Test][CAS] Fix PluginCASTest DLL discovery on Windows multi-config generators and MinGW config (#215099)
The test was computing the plugin path by walking up 3 directory levels
from the test executable to reach the build root, then appending
bin/CASPluginTest.dll. This fails on MSVC multi-config builds where an
extra Release/ subdirectory exists. Place the plugin library next to
the test executable instead, matching the pattern used by the Passes
plugin tests.
Also fix MinGW config, in mingw build configurations, the plugin is
named libCASTestPlugin.dll, while it resides in the bin directory.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply at anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply at anthropic.com>
sysutils/leaves: Add port: Text-mode disk usage visualization utility
Leaves is a disk usage analyzer inspired by WinDirStat and QDirStat.
It shows files and directories in a hierarchy of nested
rectangles. The area of a rectangle is proportional to its size. A 200
MB file will have twice the size as a sibling with 100 MB. The parent
directory will have about 3 times the area of the smaller file.
However, due to the limited resolution of working at a character
level, this is a fairly coarse approximation compared to a graphical
tool. On the other hand, this will work over remote shell connections
when graphical desktop environments are not available or impractical.
WWW: https://github.com/patonw/leaves
[ORC] Reimplement EPCGenericDylibManager on RTBridge proxies (#215256)
Reimplement EPCGenericDylibManager's open/resolve operations using
rt::Proxy objects rather than direct
ExecutorProcessControl::callSPSWrapper* calls, bringing it in line with
the other RTBridge-based executor accessors. Behavior is unchanged; the
public open/lookup surface is the same aside from the removals noted
below.
Implementation details:
* The SymbolAddrs struct (three ExecutorAddrs) becomes Bindings: the
manager instance address plus rt::Proxy handles for open and resolve.
Bindings members are protocol-agnostic, so a client can build their own
for another protocol and pass them to the constructor; Create resolves
them via buildProxies against a JITDylib / the bootstrap JITDylib.
* open/resolve return SPSExpected, so this relies on the proxy layer's
Error/Expected support to deliver a single flattened Expected, replacing
[14 lines not shown]
website: Add navigation between the documents of a release
Every release publishes a set of sibling documents (announcement, signed
checksums, upgrading or installation instructions, hardware notes, release
notes, errata, readme and schedule), but they are only listed together on
the release index page. Once inside one of them there is no way to reach
the others without editing the URL, which is inconvenient for the documents
most often read before an update, such as the errata and the upgrading
instructions.
Add a discreet list of the other documents of the same release under the
page title. The list holds the documents the release index page links to,
so releases shipping a different set of documents are handled without any
per-release maintenance, and the documents of an upcoming release stay
hidden until the index publishes them.
Only releases whose directory has its own _index.adoc are covered, which is
10.2R and newer.
[5 lines not shown]
[Hexagon] Fix reg class for C2_cmoveit/cmoveif cext lowering (#212911)
HexagonConstExtenders::getDirectRegReplacement mapped C2_cmoveit and
C2_cmoveif (32-bit predicated immediate moves into IntRegs) to A2_tfrpt
/ A2_tfrpf - the 64-bit DoubleRegs predicated transfers. When the
const-extender pass found a shared extended immediate profitable to
hoist into a register, it rewrote
%d:intregs = C2_cmoveit %p:predregs, #imm
into
%d:intregs = A2_tfrpt %p:predregs, %hoisted:intregs (BAD)
producing a paired-register transfer with IntRegs operands and tripping
the machine verifier:
Bad machine code: Illegal virtual register for instruction
Expected a DoubleRegs register, but got a IntRegs register
[9 lines not shown]
[SandboxVec][SeedCollector] Fix seed insert if can't determine mem access distance (#213807)
Up until now we would insert a memory instruction in a MemSeedBundle
even if we could not determine the access distance against the existing
bundle instructionss. This was causing a crash in the invocation of
upper_bound() as the vector could no longer be partitioned.
The fix is to extend the functions that check the memory access ordering
to return nullopt when the access difference can't be determined.
[lldb] Use StringRef when creating Listeners (#214863)
This is primarily motivated to remove the last ConstString from
Debugger.cpp. It would have been possible to write this change without
changing Listener, but then I noticed a few places where we would have
benefitted from changing the interface.