[IR] Enable dereferenceable-at-point semantics (#204795)
The precise semantics of `dereferenceable` are currently undocumented,
but de facto they are:
* Argument position `dereferenceable` implies that the memory remains
dereferenceable while the function executes.
* Return position `dereferenceable` implies that the memory remains
dereferenceable forever.
This is not coherent with how these attributes are used, in at least two
ways:
* C++ reference arguments are annotated as `dereferenceable` by Clang.
However, C++ does not actually make any guarantees that the underlying
memory does not get freed during the execution of the function. (Unlike
Rust, which does guarantee this via protectors in SB/TB.)
* We infer `dereferenceable` on allocator return values (from
`allocsize`). Allocator return values quite obviously do not stay
[25 lines not shown]
libthread_xu: Link with '-z nodelete'; unloading it is unsafe
Loading libthread_xu has irreversible process-wide effects:
* rtld lazily rebinds libc weak pthread stubs (e.g. _spinlock) to
the strong definitions in this library. There is no mechanism to
undo GOT bindings on dlclose(), so after an unload libc keeps
calling into the unmapped region.
* __isthreaded stays set -- the library cannot prove that no other
threads exist, so it cannot safely clear it -- which keeps the
libc malloc on the locked path through the dangling _spinlock
pointer.
* _thr_signal_init() installs signal handlers pointing into the
library, and _thr_signal_deinit() is empty, so signal delivery
after an unload also jumps into unmapped memory.
Consequently a program that dlopen()s a dependency chain pulling in
[42 lines not shown]
libva: updated to 2.24.0
2.24.0 - 02.Jul.2026
* va: Add VA_PICTURE_H264_NON_EXISTING flag
* va: use secure_getenv instead of getenv in va_x11.c
* doc: fix libva av1 link for doxygen
* trace: dump input/output data in va_TraceProtectedSessionExecute
* trace: Add ProtectedSession Related Log in Trace
[CodeGen] Merge TargetRegClass into MCRegClass (#207168)
Both data types store primitive information only and TargetRegisterClass
doesn't reference target-specific data structures. TargetRegisterClass,
however, freqeuently refers to MCRegisterClass through a pointer, which
prevents moving the large TargetRegisterClass instances to .rodata.
Therefore, merge the fields of TargetRegisterClass into MCRegisterClass
and adjust the remaining fields to use the existing storage mechanism
for pointer-free storage. To avoid invasive code changes, keep
TargetRegisterClass as alias for MCRegisterClass.
This reduces the size of .data.rel.ro by ~122 kiB in an all-target
build while growing .rodata by just 92 kiB. Further size improvements
are possible in future by reordering struct fields and deduplicating
masks/register lists/register class lists.
Pull Request: https://github.com/llvm/llvm-project/pull/207168
[mlir-c] Reapply Add ConversionTarget dynamic legality C API (#207104) (#207253)
Fixes LeakSanitizer failure from #206161 (reverted in #207104);
`mlirFreezeRewritePattern` moves contents out of the `RewritePatternSet`
but does not free the container (passed by value in the C API), so the
allocation from `mlirRewritePatternSetCreate` was never freed (add
`mlirRewritePatternSetDestroy(patterns)` after freezing).
[libc++] Base string's alignment on __STDCPP_DEFAULT_NEW_ALIGNMENT__ (#171785)
This allows users to influence how much we overalign `string`s
allocations and tune it to the new/delete implementation via
`-fnew-alignment`. If we don't have `__STDCPP_DEFAULT_NEW_ALGINMENT__`
or we're not using `std::allocator`, we default to an alignment of
`sizeof(void*)`.
[ELF] Precompute orphan output section names in parallel. NFC (#207321)
addOrphanSections computes getOutputSectionName serially for every live
orphan section. Without --emit-relocs/-r, the name is a pure function of
the section: precompute the names with a parallelFor.
contrib-additional.adoc: add Vyacheslav Olkhovchenkov <slw at zxy.spb.ru>
Add Vyacheslav Olkhovchenkov <slw at zxy.spb.ru> for the port misc/auto-tempo.
misc/auto-tempo: Manage Jira Tempo Timesheets worklogs from a text file
AutoTempo manages Jira worklogs through the Tempo Timesheets REST API
using a simple, version-controllable text file.
It can generate a monthly worklog template pre-populated
with working days, expand keyword shortcuts and recurring entries
defined in config.toml, validate daily totals, and apply worklogs
idempotently to Jira. A helper can draft worklogs from local
git commit history.
Targets Tempo Timesheets on Jira Server/Data Center;
authentication uses a Jira personal access token.
The tool is run from a directory containing a config.toml file.
PR: 296427
[DAGCombiner] Reassociate chains of vector reductions (#206471)
`DAGCombiner::reassociateReduction` already folds a single
`add(vecreduce(x), vecreduce(y)) -> vecreduce(add(x, y))`, and the
balanced-tree form `add(add(vecreduce(a), b), add(vecreduce(c), d))`.
It does not, however, handle a linear chain of reductions like the one
SLP emits for x264's SAD:
```
add(reduce(X0), add(reduce(X1), add(reduce(X2), acc)))
```
Only the innermost pair can ever be merged; the cascade breaks and every
reduction survives to lowering, giving one `vredsum` (or one `uadalp` step,
etc.) per term.
This PR adds a third form to `reassociateReduction`:
```
[17 lines not shown]