[SLP] Check extractelement index range before narrowing it
getExtractIndex read the constant index with getZExtValue() before the
range check, asserting on indices wider than 64 bits and truncating
64-bit indices to unsigned. Reuse getInsertExtractIndex, which checks
the APInt against the vector size first.
Fixes #241493.
Pull-request: https://github.com/llvm/llvm-project/pull/241587
[libc][docs] Complete POSIX docgen YAMLs and convert search/stdfix (#241020)
POSIX and extension header pages currently omit types and global
variables, and search.h and stdfix.h still rely on manually maintained
status tables.
Populate types, global variables, macros, and missing functions across
the 36 existing POSIX and extension YAML catalogues, and migrate
search.h and stdfix.h to docgen. Use the data-driven family matrix in
stdfix.yaml across all 12 fixed-point suffixes and move the fixed-point
engineering, compiler requirement, and ABI notes to
libc/docs/math/stdfix.md alongside the math infrastructure docs.
Assisted-by: Automated tooling, human reviewed.
AMDGPU: Use ArgRange for builtin constant argument range checks
Replace the manual Sema range checks of constant builtin arguments
with the new ArgRange annotation on the builtin definitions.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
zfs-mount-generator: fix unit names of non-ASCII mountpoints
systemd_escape() writes each byte it escapes with "\\x%02x" from
(int)*cur. Where char is signed (such as how the x86 ABIs define it), a
byte from 0x80 on is negative, so sprintf() writes \xffffff and two
more digits, and the next byte's escape overwrites all but \xff. So
/mnt/josé gets the unit mnt-jos\xff\xff.mount instead of the correct
mnt-jos\xc3\xa9.mount, and systemd refuses it, since its name doesn't
match its Where=. Mountpoints that differ only in such bytes also get
the same name, so only one of them gets a unit. And the last byte's
sprintf() writes 7 bytes past the 4 it has, into the room for the
suffix.
Print the byte as a uint8_t with %hhx, as zfs diff does with %hho, so
that it always prints as two digits.
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: R. Andrew Burza <andrew.ohana at gmail.com>
Closes #19540
clang/AMDGPU: Check constant argument ranges of builtins
These builtins take a constant argument that the IR verifier range
checks on the corresponding intrinsic. Sema didn't enforce this, so
you could write code that failed the IR verifier. Use the new Range
annotation on the builtins to fix this.
This only covers builtins that previously had no range validation at
all. Builtins already checked by the manual switch in SemaAMDGPU will
be converted separately.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
clang: Add ArgRange builtin attribute for constant argument ranges
Many target builtins take constant arguments that must be in a
specific range. These usually correspond directly to the Range
annotation on the IR intrinsic, which the verifier enforces. Today
this requires manual verification with a large builtin ID switch in
Sema, and missed cases will emit code that fails the IR verifier.
Add an ArgRange<Index, Lo, Hi> builtin attribute declaring that a
_Constant argument must be in the half-open range [Lo, Hi), the same
as the IR declaration.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[SLP]Check emitted split vector in gather reuse
Cached last inst of split node predates its operand vectors, so a
gather could reuse a split vector emitted after it.
Fixes #241491
Pull-request: https://github.com/llvm/llvm-project/pull/241578
CI: install userspace build dependencies for unit tests
The unit job uses VM preparation that upgrades installed packages,
installs kernel and ZTS dependencies, and removes packaged ZFS modules.
None of that machine preparation is needed for the userspace unit build.
Share the Debian userspace build packages between the unit job and the
full VM installer, leaving the latter's other dependencies and setup in
place. Deliver the shared installer alongside the VM script when it runs
before the repository is copied into the guest.
Use the native unit target in the documented minimum-build example.
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Kamil Monicz <kamil at monicz.dev>
Closes #19456
Attributor: Check for a fixpoint state with a single virtual call
Checking whether an abstract attribute is at a fixpoint took two virtual
calls, getState and isAtFixpoint. Add isStateAtFixpoint, which
StateWrapper implements with a direct call, and use it in the fixpoint
iteration.
attributor-light instruction counts (callgrind): -0.62% median over 68
llvm-test-suite TUs, the full attributor -0.70%.
Co-authored-by: Johannes Doerfert <jdoerfert.llvm at gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
NAS-145200 / 27.1.0 / Replace the TrueSearch program with truesearchd (by anodos325) (#20196)
- The `truesearch` service runs two units, `truesearchd` and
`truesearch-indexer`. Samba uses `spotlight backend = truesearch`.
truesearchd handles client requests. truesearch-indexer does the actual
file indexing and fs watching.
- Middleware writes `/etc/truesearchd/truesearch.conf` while the index
dataset is mounted. A dataset gets one `[target]` row if it holds an SMB
share with Spotlight search on or a WebShare share with search on, or if
it is mounted beneath such a share. Time Machine shares, home shares and
private datasets shares are not indexed.
- Encrypted datasets are now indexed due to changes in default index
dataset encryption posture.
- `.system/truesearchd` replaces `.system/truesearch`. On a data pool,
it is encrypted with the pwenc secret as a raw key. Middleware does not
mount a copy that is not encrypted or that the secret does not unlock,
and TrueSearch then reports that it is not mounted. A move of the system
dataset does not copy it, and the indexes are built again. It has the
properties of the tiering dataset.
[14 lines not shown]
[ThinLTO] Attach GUID to pre-existing declarations of imported declarations (#241395)
When a function is imported as a declaration, FunctionImporter creates
the declaration by hand and records the original GUID of the function as
!guid metadata, so that it can be located by GUID even if it was a
promoted local whose name no longer hashes to its GUID (e.g. by MemProf
ICP for cloning). However, if a declaration with that name already
existed in the destination module, the import was skipped entirely.
That declaration may have been created by the IRMover as a side effect
of linking an imported definition that references the function, e.g. a
vtable or a method table whose initializer references it. In that case
the declaration does not carry the original GUID, and MemProf's ThinLTO
backend cannot match the thin link's synthesized callsite record for an
indirect tail call to the promoted local target. The backend then does
not create the expected clone of the caller, while the callers of the
caller were already redirected to the clone by the thin link, resulting
in an undefined .memprof.N symbol at link time.
[3 lines not shown]
[clang][MS ABI] Use image-relative throw info on 32-bit Arm (#240571)
MSVC's runtime reads the throw information (ThrowInfo, CatchableTypeArray and
CatchableType) as offsets from the image base on every target but 32-bit x86,
and _CxxThrowException looks up the image base from the ThrowInfo. clang wrote
these tables with absolute pointers on 32-bit Arm, so a throw crashed in the
runtime there. Make them image-relative on Arm, as on 64-bit targets.
The RTTI stays absolute, as on MSVC.
Assisted-by: Claude Opus 5.5 (Anthropic)
[AMDGPU] Disable RA local reassignment for functions with excess pressure
The greedy register allocator's local reassignment heuristic (canReassign)
walks the whole allocation order of an evictee on each local eviction
query. When the register file is full, the walk rarely finds a free
register, and it dominates compile time for kernels that spill. For
example, a large gfx1250 kernel took 964s to compile, with 700s in VGPR
allocation and 106s in SGPR allocation. With this change it compiles in
about 200s and the generated code is slightly smaller and uses less
scratch. Synthetic kernels show the same behavior on gfx950 (469s vs 19s)
and with smaller register budgets.
Use the scheduler's excess register pressure flag to disable local
reassignment only for functions that are expected to spill. Functions
that do not spill keep the heuristic, so their code is unchanged.
Co-Authored-By: Claude <noreply at anthropic.com>
autoconf-archive: update to 2026.11.11.
* Noteworthy changes in release 2026.11.11 (2026-11-11) [stable]
The LuaJIT support that release 2024.10.16 added to AX_PROG_LUA has been
reverted. It made the macro call AM_COND_IF([LUAJIT]), so autoreconf failed
for every project that did not define that Automake conditional itself, and
the macro could no longer be used without Automake. AX_PROG_LUA,
AX_LUA_HEADERS, and AX_LUA_LIBS behave as in release 2023.02.20 again.
AX_CXX_COMPILE_STDCXX: The "noext" option works again. Release 2024.10.16
tested -std=gnu++NN instead of -std=c++NN when "noext" was requested.
AX_CHECK_COMPILE_FLAG: With GCC, -Werror is now placed before the flag being
tested instead of after it. Previously, some unsupported warning flags were
accepted, e.g. C-only warnings such as -Wmissing-prototypes when testing the
C++ compiler. Such flags are now correctly rejected.
AX_CODE_COVERAGE: The macro now uses the --coverage option for compiling and
[30 lines not shown]