[CodeGen] Always emit CodeView compiler info for UEFI targets (#188383)
UEFI is based on the MSVC toolchain conventions. PR #142970 made Windows
targets always emit minimal CodeView compiler information (`S_OBJNAME`
and `S_COMPILE3`) even when debug info is otherwise disabled, matching
MSVC. Make UEFI targets behave the same way.
[llvm] Adjust LLVM_ABI annotations for ELF/Mach-O (#232393)
Some annotations were not at the right level (class or method) for some
use cases. These ensure that the dylib build with default visibility set
to hidden properly works for macOS and Linux with tests.
The effort to build LLVM as a dylib is tracked in #109483.
System: Access: Users - add small validation warning a user for scope changes including a note to explains its purpose and constraints.
(cherry picked from commit 5b9254a70fe236d010b7d4c9e4480b3b652af211)
Attributor: Reach fixpoint in AACallEdges if there are only direct calls
The callees when there are only direct, live calls will not change.
No other attributes matter, but this ran the update a second time to
find out.
Instructions spent in amdgpu-attributor:
rocPRIM test_device_scan, gfx942: 1265M -> 1263M (-0.2%)
Blender Cycles HIP kernel, gfx1100: 488M -> 487M (-0.2%)
rocPRIM 16 tests, full LTO, closed world: 4381M -> 4359M (-0.5%)
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
Attributor: Don't create call site AACallEdges for direct calls
AACallEdgesFunction created an AACallEdges for every call-like
instruction in the function including intrinsics. For a direct call
without callback metadata, the call site attribute only ever adds the
callee, so add it directly.
Instructions spent in amdgpu-attributor:
rocPRIM test_device_scan, gfx942: 1963M -> 1768M (-9.9%)
Blender Cycles HIP kernel, gfx1100: 636M -> 622M (-2.2%)
rocPRIM 16 tests, full LTO, closed world: 7415M -> 6511M (-12.2%)
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
TableGen: Share the xforms for FP immediate bits (#232492)
AArch64 and AMDGPU defined identical bitcast_fpimm_to_iN xforms, and
Hexagon defined an equivalent ftoi. Define them once in
TargetSelectionDAG.td.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
Fix KMIP ZFS key sync with nested encryption roots
## Problem
`get_encrypted_datasets` queried `zfs.resource` with `get_children=True`, which rejects overlapping paths. Nested key-encrypted roots (e.g. a key-encrypted pool root plus a child created with its own key) are a normal layout, so every full push and pull of ZFS keys failed with a validation error, leaving keys stuck on the KMIP server and breaking server changes. Separately, push and pull pruned the in-memory key cache down to the filtered database rows instead of the datasets that exist, so the scoped push that runs whenever a key-encrypted dataset is created or has its key changed evicted every other KMIP-managed key from memory.
## Solution
Check existence by querying the exact paths without `get_children`, and prune the cache only of keys whose dataset no longer exists in ZFS. Pruning pops entries in place so concurrent sync jobs don't drop each other's keys. The KMIP push/pull integration test now covers a nested encryption root and checks the cache survives a scoped push.
[libc] Add <libintl.h> and textdomain stub (#232351)
POSIX.1-2024 standardises the <libintl.h> message translation
interfaces. Because LLVM-libc currently supports only the "C" locale,
message catalog functions can be satisfied with stateless stubs that do
not access the filesystem.
Added the <libintl.h> header generation specification and the textdomain
entrypoint behind LLVM_LIBC_ENABLE_EXPERIMENTAL_ENTRYPOINTS, returning
"messages" when querying or resetting the domain and returning the input
domain name otherwise.
Assisted-by: Automated tooling, human reviewed.
[RISCV][P-ext] Add scalar mulq(r) intrinsics (#232316)
Add the scalar "Q-format" Multiplication intrinsics:
https://github.com/riscv/riscv-p-spec/blob/master/P-ext-intrinsics.adoc#q-format-multiplication
- `__riscv_mulq_i32`
- `__riscv_mulqr_i32`
RV32 selects `mulq`/`mulqr` directly. RV64 has no scalar forms, so the
intrinsics use `pmulq.w`/`pmulqr.w` on the low words, the same way as
the scalar `aadd`/`asub` intrinsics (#230710).
[libc] Use a syscall wrapper for `sched_getscheduler` (#232597)
This PR move `sched_getscheduler` behind the centralized syscall
wrappers, following `libc/docs/dev/syscall_wrapper_refactor.md`.
[flang] Fail fir.global conversion when the type has no LLVM equivalent
GlobalOpConversion passed the result of convertType straight to
LLVM::GlobalOp::create. For a global whose type the FIR type converter
cannot lower, such as tensor<10xi32>, that result is null and
TypeAttr::get segfaults. Return a match failure instead so the
conversion reports that fir.global could not be legalized.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
Signed-off-by: Keshav Vinayak Jha <keshavvinayakjha at gmail.com>
NAS-144430 / 28.0.0-BETA.1 / Standardize zfs.resource.snapshot on the zfs.resource design (#20017)
## Problem
`zfs.resource.snapshot` only partly followed the design `zfs.resource`
settled on. It still exposed `query` instead of `list`, raised on
missing paths, emitted no events, took clone properties as an untyped
dict passed straight to libzfs (so user properties failed and
internal-only properties like `mountpoint` were reachable through
clone), had no `force` acknowledgement on rename, keyed most validation
errors on the bare method name, and had several wrong descriptions.
Separately, the ZFS history hook ran the whole dataset-delete path for
every snapshot destroy, sending bogus `pool.dataset.query` REMOVED
events and, on HA, syncing encryption keys to the standby once per
destroyed snapshot. `pool.snapshot.update` silently did nothing.
## Solution
- **list**: added `zfs.resource.snapshot.list`; `query` stays as a
hidden alias for pre-v28 clients and `query_impl` is now `list_impl`.
list, query and count skip a named path that does not exist; a path
[31 lines not shown]
[clang-repl] Add OffloadType enum and HIP device parser skeleton (#231391)
This PR adds an OffloadType enum (Detect, CUDA, HIP) and
Interpreter::createWithDevice(), so device setup can be chosen in one
place. createWithCUDA() now forwards to it, so CUDA behaviour and
existing callers are unchanged. Detect and the HIP binary generation
return "unsupported" errors for now.
It also adds the IncrementalHIPDeviceParser class. Its constructor
checks that the device target triple is an AMDGPU one.
GenerateOffloadBinary() is a stub that will be implemented later.
Assisted by Claude Sonnet 5.5