[SLP]Support runtime alias checks versioning for blocks in loops
Allow versioning of blocks inside loops, e.g. fully unrolled inner loop,
whose pointers are advanced by the loop header PHIs. Accept header PHIs
as base objects, use the base values directly in the bounds instead of
recomputing loop-variant bases from their recurrences.
Fixes #49896
Assisted-by: Cursor
Reviewers: RKSimon, bababuck
Pull Request: https://github.com/llvm/llvm-project/pull/226955
[SSAF] Close unsafe-buffer reachability over override families
An unsafe pointer reaching one override's parameter is equally unsafe in every
sibling and base override of that method, because the call site picks the
target dynamically. Without closing over the families, reachability depended
on which override the extractor happened to see the flow through, so a fix
suggested for the base could be contradicted by a derived override.
- Mirroring is level-preserving: families relate slot entities, so a reachable
EPL propagates only to the same pointer level on its family members.
- Mirroring happens inside the pointer-flow search, so flows out of a mirrored
EPL are followed too.
- Type-constrained slots are never mirrored onto, so C3 still holds.
§4 of rdar://179151603
Assisted-By: claude
[SSAF] Serialize virtual method summaries and families
Per-TU summaries and whole-program results cross process boundaries, and the
JSON layer refuses to write a summary kind it has no format for. Register both
sides so --ssaf-extract-summaries=VirtualMethod becomes usable and the family
result survives a round trip.
Deserialization tolerates a missing override list, since a root virtual method
legitimately has none.
§3 of rdar://179151603
[SSAF] Group virtual method slots into override families (#213317)
A virtual call site can dispatch to any override, so the parameter and
return slots that occupy the same vtable slot across an override chain are
indistinguishable to a caller. Whole-program consumers therefore have to
treat them as one unit or they will reason about a slot that a call never
actually reaches.
Compute those units up front, keyed per slot, so consumers only need a
map lookup rather than their own traversal of the override relation.
Overloads occupy distinct vtable slots and stay in distinct families.
The family representative is the smallest EntityId in the class, which
keeps the result stable across runs.
§2 of rdar://179151603
Assisted-By: claude
libpfctl: decode PFR_A_AF into a u8
The kernel sends PFR_A_AF as a u32, although it is documented and
parsed as a u8, and libpfctl decoded it with snl_attr_get_uint32()
straight into the u8 pfra_af. That overwrote pfra_net, pfra_not and
pfra_fback, and left pfra_af zero on big-endian hosts.
Decode it via a temporary, and accept a u8 as well, so that the
kernel can be corrected later without breaking libpfctl.
Reviewed by: kp
Approved by: kp (mentor)
Fixes: f27e44e2e3b5 ("pf: convert DIOCRGETADDRS to netlink")
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D60110
[Mips] Add set directive support for EVA instructions (#225888)
Add assembler directives to enable/disable access to EVA instructions,
such as `cachee/lbe/sbe/tlbinv/etc`, with `.set eva/noeva`.
X86: Mark the dead EFLAGS clobbers in the SjLj expansions
The zero materializations and the shadow stack delta shifts emitted by
the setjmp/longjmp custom inserters never have their EFLAGS clobber
read, so set the dead flag where the instructions are built.
Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>
[clang][NVPTX] Add support for pzo in f32/f16x2/bf16x2 to FP4 conversions (#225318)
This patch adds support for `pzo` variants and `rz` rounding mode to
existing `f32/f16x2/bf16x2` to `FP4` (`e2m1x2`) conversion intrinsics.
Also adds `clang builtins` for the new variants.
Tests have been verified through `ptxas-13.4`.
PTX ISA Reference:
https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#data-movement-and-conversion-instructions-cvt
---------
Signed-off-by: DharuniRAcharya <dharunira at nvidia.com>
[VPlan] Fix find last reductions not using frozen condition in select (#223962)
A find last reduction is something like:
(select c[n], x[n], (select c[n-1], x[n-1], (select ...)))
So even if previous iterations had poison for c[x], the top-level select
blocks it.
MaskSelect uses the non-frozen Cond, and that in turn is fed into
VPInstruction::ExtractLastActive, which in turn gets expanded to
vector.reduce.umax, which returns poison if any of the lanes were
poison.
So in the case e.g. c[n] = 1, c[n-1] = poison and VF=2, the scalar loop
returns x[n] whilst vector loop returns poison.
We're also introducing multiple uses of Cond which isn't sound for
undef, so for these reasons we need to use the frozen Cond.
Handle sync, interlace in GTF modes, explicity init name in EDID and GTF.
Avoid stack garbage passed in those uninitialized fields - fixes
wsdisplay drivers that actually read these fields.
Send license issued_at in TNC heartbeat
This commit adds changes to expose the license's issue date as `issued_at` on `truenas.license.info` and send it to TNC in the heartbeat. v2 licenses pass the minted timestamp through verbatim, legacy licenses report their contract start date, and system-generated records report null.
LoongArch: Respect the target-abi module flag in the ELF header (#226498)
The target streamer read the ABI from MCTargetOptions when constructed,
so the e_flags recorded the command line -target-abi and ignored the
module flag.
Co-authored-by: Claude Opus 5 <noreply at anthropic.com>
LoongArch: Register a null target streamer (#226497)
Emitting a TLS variable's debug location calls into the target streamer,
which was only registered for asm and object output. -filetype=null
therefore null dereferenced.
Co-authored-by: Claude Opus 5 <noreply at anthropic.com>
fuse-emulator-utils: updated to 1.5.0
1.5.0
* listbasic
* Support extracting BASIC listings from Microdrive cartridge
images (Fredrick Meunier).
* mdrlist
* New utility to list the contents of an MDR Microdrive cartridge
image (Fredrick Meunier).
* fmfconv
* Refresh flashing cells when the FMF flash phase changes (bug 526)
(thanks, Alberto Garcia) (Fredrick Meunier).
* rzxdump
* Display the contents of compressed input blocks (Fredrick
Meunier).
[16 lines not shown]
fuse-emulator: updated to 1.10.0
* Emulation core improvements:
* Expand automatic tape-loader detection and acceleration for
Microprose, Software Projects, Gremlin 2 and Movieload loaders
(fixes bugs 396, 429 and 430) (thanks, Philip Kendall)
(Fredrick Meunier).
* Improve automatic tape playback for custom loaders, allowing Basil
the Great Mouse Detective, Viz: The Computer Game, Moonlighter and
Trzy Wymiary to load without manual tape control (fixes bug 433
and part of bug 218) (Fredrick Meunier).
* Preserve the complete tape signal state when switching from ROM
traps to custom loaders, allowing Bomb Jack and similar loaders to
continue correctly (fixes bug 333 and part of bug 310)
(Fredrick Meunier).
* Avoid accelerating the Technician Ted loader (fixes bug 55)
(Fredrick Meunier).
* Do not automatically restart rewound tapes at end of tape, making
it easier to change sides in multi-side games such as Echelon
[75 lines not shown]
net/samba424: restore missing FreeBSD fdescfs support in lib/system.c
net/samba419, net/samba420, net/samba422 and net/samba423 all carried
a patch (originally 0028-s3-lib-system-add-FreeBSD-proc_fd_pattern.patch
by Timur I. Bakeyev, adapted for Samba 4.20 by Andrea Venturoli) that
teaches sys_have_proc_fds()/sys_proc_fd_path() in source3/lib/system.c
to recognize FreeBSD's fdescfs mount as an equivalent to Linux's
/proc/self/fd. This patch was dropped when net/samba424 was created
and was never carried forward.
Without it, upstream's sys_have_proc_fds() only ever checks
"/proc/self/fd/0", which does not exist on stock FreeBSD, so
fsp->fsp_flags.have_proc_fds is always false. That flag gates the
race-free pathref-fd-to-path resolution branches in
patch-source3_modules_vfs__zfsacl.c and patch-source3_modules_vfs__freebsd.c,
so without it both modules silently fall back to a less secure,
non-race-free path-based lookup instead of the fdescfs-backed path
that samba419's r24fbb5209481 ("Use a simple approach to reconcile
O_PATH and vfs_zfsacl") was built around.
[24 lines not shown]
libspectrum: updated to 1.7.0
1.7.0
* Make tape playback own signal polarity and return absolute levels for
live and cursor playback, with atomic cursor state operations
(Fredrick Meunier).
* Add a resolved-file abstraction for accessing compressed and
uncompressed files (part of bugs 507 and 192) (Fredrick Meunier,
thanks Gergely Szasz and Bernat).
* Add RZX playback input cursor and creator metadata APIs (Fredrick
Meunier).
* Add structured accessors for microdrive block headers, record
descriptors, data and checksums (Fredrick Meunier).
* Require C11 or later (Fredrick Meunier).
[15 lines not shown]
[CIR][CodeGen][NFC] Retire the CodeGenUtils.h catch-all header
The preceding patches group shared helpers by the classic CodeGen file, or
file family, they came from. That leaves CodeGenUtils.h holding only the
five helpers PR #221001 started the library with and the target-features
checker from PR #223056, so they move to the same places their neighbours
went and the header goes away. The library keeps its name.
checkTargetFeatures came out of CodeGenFunction.cpp, so it joins
shouldEmitLifetimeMarkers in FunctionUtils.h. TargetUtils.h would fit it by
subject, but the series sorts by origin file, and picking origin keeps the
rule mechanical.
isAAPCS is the one case origin does not settle, since it was duplicated in
CGExpr.cpp and CGRecordLayoutBuilder.cpp rather than living in one file. It
is a plain TargetInfo predicate, so it goes with the other target
predicates.
Doing this now avoids making every helper we share from here on pick
[5 lines not shown]
[CIR][CodeGen][NFC] Share requiresAMDGPUProtectedVisibility
Both CodeGens carry the same attribute check deciding whether an AMDGPU
kernel or device variable with hidden visibility must be promoted to
protected. The shared version takes a bool saying whether the global
currently has hidden visibility. Classic passed an llvm::GlobalValue and
CIR a cir::VisibilityKind, and both only compared it against hidden.
No functional change.
[CIR][CodeGen][NFC] Share hasExtraNeonArgument
Both CodeGens carry the same table-driven check for whether a Neon builtin
takes a trailing type-discriminating argument. CIR's copy was marked
"TODO(cir): Share this with ARM.cpp" and had a dead second switch, which the
shared version drops; classic's if/return pair becomes `return mask != 0`.
No functional change.