x11/bosd: Update to 10.5
Refresh the primary output before each show so a rearranged desktop
lands on the primary. Reset the gauge watermark when previous equals
current. Install bosd-start and its manual.
Changelog: https://github.com/FrauBSD/bosd/blob/10.5/CHANGELOG.md
Approved by: fuz (mentor), jrm (mentor)
Reviewed by: fuz (mentor), jrm (mentor)
Differential Revision: https://reviews.freebsd.org/D60164
[IR][ADT] Avoid isPointerIntoBucketsArray in RemoveFromUseList (NFC) (#228325)
RemoveFromUseList erases the entry from ValueHandles when removing the
sole remaining element in the doubly linked list. Without this patch,
after unlinking the tail element, it checks whether PrevPtr points into
the DenseMap bucket array:
if (Handles.isPointerIntoBucketsArray(PrevPtr)) {
Handles.erase(getValPtr());
This patch instead tags ValueHandleHead::Head with true via
PointerIntPair<ValueHandleBase *, 1, bool>, while leaving
ValueHandleBase::Next untagged. The tag bit allows RemoveFromUseList to
quickly determine whether it is removing the sole element in the list
without calling isPointerIntoBucketsArray.
Below is the breakdown of RemoveFromUseList calls and the perf stat -r10
comparison when compiling SLPVectorizer.ii with clang -O3:
[26 lines not shown]
[CIR] Implement mustprogress/uwtable attributes (#228093)
These are effectively on-by-default attributes for nearly every function
in the program, and allows LLVM to make better optimization decisions.
'mustprogress' is added any time we have forward progress guaranteeds by
language (C++11 and not finite-loops disabled via command line option).
`uwtable` forwards the 'unwind table' codegen opt to functions that
don't opt out of it (via attribute), and clarifies whether the function
has an entry in the unwind table. In some programs this can be
time-consuming, so they disable them.
Both of these showed up as a defficiency in a test suite, and resulted
in certain programs taking a huge amount of time to properly compile.
This patch adds both as the 'extended attributes' printing location to
functions.
[Polly] Isolate complete tiles from partial tiles in the tiling path (#221087)
Tiling an iteration space whose extent is not a multiple of the tile
size gives every point loop a min() upper bound. The loop vectorizer
cannot pick a fixed vector factor for such a loop without a runtime
check, and it has to emit a scalar epilogue inside the tile loop, so the
loops that carry the whole runtime of a tiled kernel are the ones it
handles worst.
Isolating the complete tiles from the partial ones gives the point loops
of the complete tiles constant bounds. Polly already does this for the
loop it strip-mines in the prevectorization path, added in commit
ca7f5bb ("Full/partial tile separation for vectorization"); this applies
the same technique to the loops produced by the regular tiling.
getPartialTilePrefixes is generalized to all point dimensions at once as
getCompleteTilePrefixes, and the resulting isolate option, combined with
atomic for the remaining part, is attached to the tile band.
The new -polly-isolate-complete-tiles option is off by default: it is a
[54 lines not shown]
sys: Use ACTIVE_CC to choose -ftrivial-auto-var-init.
I'm a little fuzzy on the finer semantics of ACTIVE_CC vs
HAVE_GCC/HAVE_LLVM from share/mk/bsd.README, but I think this is the
intended way to conditionalize decisions like this.
PR PR kern/60839: use -ftrivial-auto-var-init
libc/stdlib/getenv.c: always allocate new environment
in particular, if the old environment is NULL.
Among making it less surprising for userspace to observe NULL environ,
the change also prevents NULL deref in __rebuild_environ() when
terminating the empty as NULL environment with the NULL pointer.
Reported by: Leo Bicknell <bicknell at ufp.org>
PR: 298747
Reviewed by: emaste, markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D59996
[bazel] Select the MASM BLAKE3 assembly for msvc-cl (#228560)
Add an `is_x86_64_windows_msvc` setting and `select` the
`_windows_msvc.asm` variants there; rules_cc's MSVC toolchains assemble
`.asm` with `ml64`. The pattern list loses its fixed `.S` suffix so one
list serves both file kinds.
sysutils/jtransfer: New port: Securely transfer files between jails
jtransfer is a lightweight tool for reading a file from a FreeBSD jail
and writing it to standard output, or for reading from standard input and
writing the content as a file inside a FreeBSD jail. The transfer is
implemented essentially using a standard pipe(2), following the typical
Unix way.
WWW: https://github.com/DtxdF/jtransfer/
MFH: 2026Q4
(cherry picked from commit 463fab189c3a2b6de955be6ff346966a6ce35af5)
[CIR] Fix base-class index in const-record when there is a vbase (#228484)
buidlRecordHelper didn't skip the 'virtual' bases like APValue did, so
the presence of a virtual base alone was enough to throw the index off.
This patch gets us slightly more in line with how this is done in
classic codegen.
It is really only reachable in C++26 because of the relaxed constexpr
rules iwth virtual bases, so it needs its own test.
Fixes: #228302
[Bazel] Add opt-in libunwind EH frame registration (#226148)
LLVM libunwind expects `__register_frame` to receive one FDE, while
non-Apple Bazel builds pass the whole `.eh_frame` section by default.
This can produce `FDE is really a CIE` when linking against LLVM
libunwind (see #43419).
Add `--@llvm-project//llvm:use_libunwind_for_eh_frame_registration=true`
to set `HAVE_UNW_ADD_DYNAMIC_FDE` locally on `ExecutionEngine` and
`OrcTargetProcess`. Defaults and runtime linkage stay unchanged.
This follows the existing [`enable_abi_breaking_checks`
setting](https://github.com/llvm/llvm-project/blob/a8705c33dda2bb831ee6d6e0500b2d20bb902d0c/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel#L29-L41).
CMake already probes `__unw_add_dynamic_fde` for the same purpose.
[CIR] Correct array-new 'asserts' (#228461)
The assertion checked whether the value was signed (which just checks
the MSB), but didn't check if the expression itself was of signed
type. The result was a size_t expression in the upper half (that is,
MSB set!) would hit the assertion. This patch checks the sign of
the thing too, which still allows us to do the zext later.
Additionally, this test case ALSO overflows, so we make sure we handle
overflow correctly here as well.
Fixes: #227980
[AMDGPU] Legalize uniform 16-bit loads to match subword load instructions (#225097)
Generate better code for uniform16-bit loads.
First approach, added 16-bit load patterns in tablegen that created
subword load instructions.
Second and preferred approach legalizes uniform 16-bit loads to: `i16 =
trunc (zextload i16->i32)` which allows existing tablegen patterns to
match.
---------
Signed-off-by: John Lu <John.Lu at amd.com>
[X86] Don't allocate unused padding in front of realigned locals (#227495)
PEI aligns local objects relative to the incoming stack pointer, leaving
a gap between the CSRs and the first local. With the stack realigned
after the pushes, locals are addressed from the final stack pointer, so
that gap is never used: exclude it from the prologue's allocation.
Fixes #224278
[CIR] Add cast for __builtin_char_memchr (#228471)
The CIR operation has a result type of 'ptr<void>', but the
__builtin_char_memchr function returns 'ptr<char>'. This patch inserts a
bitcast in the handling of this builtin to make sure we get the type
correct.
Note that the createBitCast checks to make sure it isn't a noop first,
so there is no reason to add a conditional here.
Fixes: #228008