FDP/writing style: Headings are in title case
In the FreeBSD documentation project, headings are title case following
older American publishing tradition. Google and Microsoft style guides
have switched to sentence case, but I for one like our old world style
and the quality it usually implies, and want to carry that torch.
There are different style houses have subtle nuances on what constitutes
a "small word", and I do not think there is anything to be gained from
doing a whole bikeshed on which one to follow and then trying to get all
the docs to use that consistently. For now, fix this consistently on the
writing style page without adding a new rule.
PR: 296223
Reviewed by: carlavilla
Differential Revision: https://reviews.freebsd.org/D61592
[EarlyCSE] Fold equivalent `bitextract` and `bitinsert` (#242720)
EarlyCSE replaces an instruction with an earlier one that computes the
same value. It only considers instructions accepted by
`SimpleValue::canHandle`, which lists the opcodes it knows.
`bitextract` and `bitinsert` were missing from that list. They use the
generic hash, which mixes the opcode and operands, so they are also
added to the assert that guards it.
This mirrors the GVN change in #242716.
[ValueTracking][NFC] Check whether assume and context in isValidAssumeForContext are equal first (#242796)
This check is really cheap, so we should do it at the start.
[AArch64][GlobalISel] Require asserts in direct-hasoneuse-postlegalizer-debug.mir (#242794)
The test selects combiner rules by name with
`-aarch64postlegalizercombiner-only-enable-rule`. Rule names are only
recognized in builds with assertions, so builders without them fail with
"Invalid rule identifier", for example
https://lab.llvm.org/buildbot/#/builders/11/builds/53689.
Fixes a test failure introduced by #237644.
net-p2p/gtk-gnutella: unbreak the build on 32-bit architectures
Turns out this version suffers from the same issue as 1.2.1 I have
fixed before; reapply lost part of commit 9a32701b738f as a remedy.
Fixes: 676a7a30328b
p5-Sereal*: update to 7.002
7.002
* Add an opt-in paranoid preset for authenticated input, bounded
decompression and container sizes, UTF-8 validation, restricted
object blessing and THAW, and a recursion limit of 2048. Explicit
constructor options can override each default.
* Add allow_classes for ordinary and frozen objects and
track_classes for per-class object counts. Permit genuine Regexp
objects through refuse_objects unless an allowlist excludes them.
* Add allow_unsigned as an explicit checksum-policy opt-out. Lower
the normal recursion limit from 10000 to 8192, or 4096 on Cygwin.
Clarify the trust assumptions and limits of paranoid mode.
* Balance custom-op argument and result references on Perl builds
with PERL_RC_STACK.
* Fix native floating-point declaration tests on older FreeBSD and
macOS Perls. Remove hobodecoder's od dependency and make child
tests portable on Windows. Bound randomized test runtime and TAP
memory use, and adapt deep-recursion tests to Cygwin's stack.
p5-Cpanel-JSON-XS: update to 4.81.
4.81 2026-11-09 (rurban)
- Fix memory leak when croak is called while encoding a tied hash
in canonical mode (PR #261, Nikolay Shaplov, ISP RAS)
[GlobalISel][AArch64] Fold vector multiplication by 0/1 masks into AND (#240134)
Multiplying a vector by a constant whose elements are all 0 or 1 only
keeps or clears lanes, so it can be done with an AND mask, as
SelectionDAG does. This adds a generic combine,
`mul_by_zero_one_vector`: `(mul x, <0/1...>) -> (and x, <0/-1...>)`, for
either operand order. All-zero and all-one vectors are left to the
existing combines.
```
define <2 x i32> @test(<2 x i32> %a) {
%r = mul <2 x i32> <i32 1, i32 0>, %a
ret <2 x i32> %r
}
```
Before:
```
adrp x8, .LCPI1_0
[7 lines not shown]
[mlir][SPIR-V] Collect availability of optional enum attributes (#240532)
The availability generator skipped OptionalAttr enums, so update-vce
gave ImageRead with Nontemporal v1.0 instead of v1.6
[BasicAA] Drop nsw when folding an overflowing constant offset (#242541)
Folding the constants in a chain of `nsw` adds or subtracts can overflow
even when the operations themselves are defined. Keeping `nsw` on the
resulting linear expression lets BasicAA return `NoAlias` for overlapping
accesses. Check the folded offset for signed overflow and drop `nsw` if
it wraps.
Split from #241380.
Proofs: https://alive2.llvm.org/ce/z/nq85ze
Assisted-by: Claude Code
Assisted-by: OpenAI Codex
[CIR] Keep volatile and atomic return loads before cleanups
When FlattenCFG routes a cir.return through a cleanup, it sinks a load
of an entry-block alloca that feeds the return into the block after the
cleanup. For a volatile or atomic load this moved the access past the
cleanup code. Such a load is now spilled to a temporary before the
cleanup, like any other return operand.
Assisted-by: Claude Code (claude-opus-5-5).
[CIR][NFC] Add isVolatileOrAtomic() to cir.load and cir.store
Several places spelled out getIsVolatile() || getMemOrder() to decide
whether a load or store must stay as written. Name that check once on
both ops and use it in the load effects, mem2reg, CIRSimplify and the
ABI rewriter.
Assisted-by: Claude Code (claude-opus-5-5).
[CIR] Report side effects of volatile loads and memory asm operands (#242691)
Dead code elimination erased some unused CIR ops that have side effects,
because their declared memory effects were too weak:
- `cir.load`, `cir.get_bitfield` and `cir.matrix.column_major_load`
declared only a read of their address, so an unused volatile or atomic
load was erased. A volatile or atomic load now also reads and writes
unknown memory, as `llvm.load` does.
- `cir.asm` reported nothing for a memory operand such as `"=*m"`, so an
asm whose only output is in memory was erased. It now reads and writes
each memory operand. The new `InlineAsmOp::isMemoryOperand` identifies
those operands, and the LLVM lowering uses it too.
- `cir.asm` now has a verifier: `operand_attrs` needs one entry per
operand, either a unit attribute on a pointer operand (a memory operand)
or an empty dictionary.
Assisted-by: Claude Code (claude-opus-5-5).