[VPlan] Expand AddRecs in VPlan, only canonical ARs in IR. (#230858)
Expand AddRecs of loops outside VPlan's scope in VPSCEVExpander
mirroring SCEVExpander::visitAddRecExpr:
* {X,+,F} is expanded as X + {0,+,F} (using ptradd for pointers)
* {0,+,F} as {0,+,1} * F.
* narrow canonical are expanded by truncating a wide canonical IV, if
one exits.
Only canonical IVs (and non-affine AddRecs) are expanded by IR
SCEVExpander (as VPExpandSCEVRecipe), which re-uses or creates new
instructions outside VPlan's scope (in the loop that contains the
AddRec).
PR: https://github.com/llvm/llvm-project/pull/230858
[Support] Added file_size(file_t) to improve performance on Windows (#234610)
Usually sys::fs::file_status is using to get the file size. But Windows
implementation of sys::fs::status(file_t, file_status &) is very slow
especially because of calling realPathFromHandle(). Added
sys::fs::file_size(file_t) which uses system's GetFileSizeEx().
NFC for non-Windows systems.
Merge tag 'for-linus-tsm' of https://github.com/jgunthorpe/linux
Pull TSM update from Jason Gunthorpe:
"One patch to update the maintainers file following Dan's passing for
TSM subsystem. Three people have volunteered to help complete this
work"
* tag 'for-linus-tsm' of https://github.com/jgunthorpe/linux:
coco/tsm: Update maintainership
[lldb-dap][test] Read until the EOF from the adapter (#234587)
The read loop previously stops if the transport is no longer alive. This
is true when either the client or the adapter disconnects. The adapter
can send disconnect and immediately close the connection giving the
client little to no time
to read the data.
The read loop now reads until EOF from the adapter, to read any missing
data in the reader's buffer.
Update the test to simulate this.
Fixes
https://github.com/llvm/llvm-project/issues/137660#issuecomment-5635649521
mail/mail-expire: Update to 0.9.3
Changelog:
* Safeguard to not run into --delete mode by mistake and lose messages without
any warning (by adding a delay and hint and --yes option to override it)
* Best-effort attempt to restore original ownership and permissions of
recreated Mbox files after filtering (closes: #344222)
Merge tag 'sched_ext-for-7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext
Pull sched_ext updates from Tejun Heo:
- Proxy execution can now be enabled together with sched_ext. A BPF
scheduler can opt in to receive mutex-blocked tasks that donate their
scheduling context to the lock owner and place them itself.
- Lazy preemption: a BPF scheduler can preempt or kick a CPU lazily,
deferring the switch to the next return to user space or tick, as the
fair class can.
- Sub-schedulers: a parent now learns which child runs on each CPU it
delegated and when a cap change takes effect. A detaching child loses
its caps before the parent restores the CPUs.
- New kfuncs re-enqueue single tasks from a dispatch queue iteration
and report a cgroup's CPU count and a CID's NUMA node. The CID
topology now includes clusters.
[36 lines not shown]
[CIR] Do not assume function aliases are dso_local under PIC
For PIC code that is not a PIE, shouldAssumeDSOLocal marks a function
dso_local when it can use a local alias, as classic codegen does.
Classic applies that only to real functions, never to aliases. CIR
represents a function alias as a FuncOp with an aliasee, so the check
now skips aliases. The flag does not reach LLVM IR yet, because MLIR's
translation drops dso_local on aliases. #234012 fixes that.
Assisted-by: Cursor / claude-opus-5.5
Merge tag 'cgroup-for-7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup
Pull cgroup updates from Tejun Heo:
- A write to cgroup.subtree_control or cgroup.type could hang in D
state for as long as a task pinning a dying controller took to exit,
as syzbot reported. The wait is now interruptible.
- cpuset: the deadline bandwidth check ran on cpusets that weren't
valid partition roots, failing cpuset writes with -EBUSY while
deadline tasks existed. The CPU count the fair class takes from
cpuset assumed a shared hierarchy that cgroup1 may not have.
- Finding a cgroup's effective controller state no longer walks up the
hierarchy, for per-I/O users such as nvmet. io.stat reads of cgroups
without block devices skip the stat flush.
- cpuset v1-only code moved to the v1 file and the exclusive flag
dropped from v2, with documentation corrections for partition roots
[30 lines not shown]
[GlobalOpt] Only remove atexit calls where atexit is the callee (#234731)
Calls that only pass __cxa_atexit or atexit as an argument were wrongly
removed.
Fixes #234325
Merge tag 'wq-for-7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
Pull workqueue updates from Tejun Heo:
- Flushing a workqueue now visits only the queues used since the last
flush instead of one per possible CPU. Idle flushes get 10 to 100
times faster on large machines, which XFS hits on every log force.
- Per-cpu workqueues are built through the same attribute path as
unbound ones and get a max_active of their own, continuing the work
to turn them into an affinity scope of unbound workqueues.
- New tracepoints for work items turning CPU-intensive, rescuer mayday
and rescue events, and BH workers yielding with work pending.
- A KCSAN annotation and small cleanups
* tag 'wq-for-7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
workqueue: mark pool->nr_running as __data_racy
[15 lines not shown]
opentmux: Import opentmux-0.1 as wip/opentmux
This is a fork of tmux-3.6a before any AI was introduced into the
project.
tmux is a terminal multiplexer: it enables a number of terminals to be
created, accessed, and controlled from a single screen. tmux may be
detached from a screen and continue running in the background, then
later reattached.
This release runs on OpenBSD, FreeBSD, NetBSD, Linux, macOS and
Solaris.
Completely based on misc/tmux.
[flang][cuda] Sync the device descriptor of a global passed to a POINTER or ALLOCATABLE dummy (#234679)
A module or SAVE'd pointer or allocatable with a CUDA data attribute has
a device copy of its descriptor. Lowering keeps that copy up to date
with `cuf.sync_descriptor` after pointer assignment, ALLOCATE and
DEALLOCATE, but only when the statement itself names the global. When
the association or allocation happens inside a callee through a POINTER
or ALLOCATABLE dummy argument, the callee updates the host descriptor
and nothing syncs the device copy, so a later kernel reads a null
descriptor and faults.
Emit `cuf.sync_descriptor` after a call for every actual argument that
is a registered device global passed to a POINTER or ALLOCATABLE dummy
that is not `intent(in)`. Kernel launches and device code are skipped.
`genPointerSync` now takes the statement location so the sync is
attributed to the call rather than to the declaration.
[WholeProgramDevirt] don't let a dead vtable prevent devirtualization (#232432)
When a vtable is dead and local, it should not prevent devirtualization.
https://godbolt.org/z/qxcM1ab5j
This currently does not devirtualize the call in `call1` even though
there is only one live member of the `!0` set:
```llvm
define void @call1(ptr %obj) {
%vtable = load ptr, ptr %obj, align 8
%1 = call i1 @llvm.type.test(ptr %vtable, metadata !"typeid1")
%2 = getelementptr i8, ptr %vtable, i32 0
%3 = load ptr, ptr %2, align 8
call void %3(ptr %obj)
ret void
}
```
[11 lines not shown]
[AMDGPU] Materialize subregister WMMA scales at lane width
Copy an SGPR subregister scale into a VGPR of that lane's size so two
lanes of one tuple stay independent.
Co-authored-by: Cursor <cursoragent at cursor.com>
[lldb] Replace lldb_setup_rpaths with lldb_add_rpaths (#233996)
There is a way to add rpaths instead of wholesale replacement. It is far
less dangerous to append duplicate RPATHS than to replace them entirely.
Merge tag 'keys-v7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd
Pull keys updates from Jarkko Sakkinen:
"Highlight:
- Don't leak local kernel addresses (and complement the ongoing
rhashtable migration) (Kyle Zeng)
The index value for the associative array has been calculated with
the following formula:
mult_64x32_and_fold(description + type address + domain address)
By creating a sequence of dummy keys (e.g., "A", "B", "C", ...), it
is trivial to form a group of equations with a predictable hash
function, and ultimately break KASLR.
Kyle's solution is based on an ephemeral SipHash key and an atomic
64-bit counter, which is encapsulated to a key_index_id(). This
[66 lines not shown]
[Fuchsia] Disable CIR in Fuchsia's toolchain builds (#234242)
CIR is adding significant build time and additional breakages w/o any
benefit, so remove it from our cache files.
[clang][NFC] Replace push_back with emplace_back for vector insertions (#232260)
Replace the push_back() calls with emplace_back() to allow in place
construction of objects instead of the object creation and move calls
done by push_back().
Changes are only made to `LinkLibraries` small vector