[DebugInfo] Find call site values for params in preserved registers (#172339)
For example, given code like this:
int local = value();
callee(local);
return local;
resulting in assembly like:
movl %eax, %ebx // %eax = local
movl %eax, %edi
callq callee at PLT
the call site value generation did not understand that the value of
local is stored in the callee-saved %ebx during the call, and did not
emit any call site value. This patch addresses that, resulting in:
DW_TAG_call_site_parameter
[22 lines not shown]
[flang] Lowering FIR memory ops to MemRef dialect (#173507)
This patch introduces FIRToMemRef, a lowering pass that converts FIR
memory operations to the MemRef dialect, including support for slices,
shifts, and descriptor-style access patterns. To support partial
lowering, where FIR and MemRef types can coexist, we extend the handling
of fir.convert to correctly marshal between FIR reference-like types and
MemRef descriptors. The patch also factors the type conversion logic
into a reusable FIRToMemRefTypeConverter, which centralizes the rules
for converting FIR types (e.g. !fir.ref, !fir.box, sequences, logicals)
to their corresponding memref types, and is used throughout the new
pass.
---------
Co-authored-by: Scott Manley <rscottmanley at gmail.com>
Co-authored-by: jeanPerier <jean.perier.polytechnique at gmail.com>
[LoopUnroll] Do not copy !llvm.loop from latch to non-latch (#165635)
When LoopUnroll copies the original loop's latch to the corresponding
non-latch branch in an unrolled iteration, any `!llvm.loop` is copied
along with it, but `!llvm.loop` is useless and misleading there. This
patch discards it.
e06831a3b29d did the same for LoopPeel.
tuning.7: use the correct word for collapsing
Fixes: 457b940bfb6a228af1281f357b627ecf1e26fea5
Signed-off-by: Oliver Pinter <oliver.pntr+freebsd at gmail.com>
MFC after: 1 week
[llvm][docs] Release process improvements (#175759)
Some improvements from working through this getting LLVM 22 off the
ground. Most of the changes are pretty straightforward, but one worth
mentioning is the change to push the trunk version bump and tag before
creating the release branch.
This avoids a scenario that was hit for 22 where the release/22.x branch
was pushed first and more commits landed in trunk before the 23.0.0git
version bump was rebased and committed. The commits landed on trunk
during this brief window had the wrong version. This was resolved by
cherry-picking the commits to the release branch.
It's not entirely clear how big of an issue this really is, but if we
can avoid it and make the process less stressful in the process I think
it makes sense to do so.
NAS-139273 / 26.04 / Type-safe `pool.snapshottask` plugin (#18005)
A job, similar to already merged
https://github.com/truenas/middleware/pull/17882, but now, instead of
ConfigService, I converted a more complex CRUDService.
NAS-139038 / 26.04 / Fix 2-minute boot delay and dhcpcd compatibility with Trixie (#18026)
This commit fixes two issues introduced during the Bookworm to Trixie
migration:
1. Systemd dependency deadlock causing ~2 minute boot delay:
ix-dhcpcd@.service had After=networking.service, which depends on
network-pre.target, which waits for ix-netif.service. However, ix-netif
calls interface.sync() which synchronously starts ix-dhcpcd@, creating a
circular wait that blocked until midclt's 120s timeout.
Fix: Set DefaultDependencies=no and remove After=networking.service. The
service now only waits for the network device to exist.
2. Invalid 'master' option in dhcpcd.conf: dhcpcd 10.x (Trixie) removed
the 'master' config file option that existed in dhcpcd 9.x (Bookworm).
This caused "unknown option: master" warnings. The option was also
unnecessary since TrueNAS runs per-interface daemons via template units,
not a single master daemon.
[4 lines not shown]
[libc++] Add benchmarks to the associative containers that don't go to the end of the container (#175005)
We have quite a few benchmarks for the associative containers which only
ever go to the end of the container. This is a relatively special case,
since it results in good branch prediction. However, users rarely have
that access pattern. This patch adds benchmarks where we don't just go
to the end where appropriate.
Fixes #162359
Nominate Michael Klemm as lead maintainer of OpenMP (#175964)
We discussed this during the OpenMP sync-up call on 1/14 and he's still
actively maintaining this component and would be happy to act as lead
for it.
[Clang] Check enable_if attribute in the DC of current function (#175899)
A ContextRAII here ensures immediate access control checking within the
current context, allowing us to rule out inaccessible constructors
during potential overload resolution, where access diagnostics are
converted from hard errors into SFINAE errors, making the behavior more
preferrable with the nature of the enable_if attribute.
Fixes https://github.com/llvm/llvm-project/issues/175895
[flang][NFC] Converted five tests from old lowering to new lowering (part 7) (#175703)
Tests converted: array-wide-char.f90, associate-construct-2.f90,
assumed-shape-callee.f90, assumed-type.f90, basic-call.f90
devel/llvm-devel: update to the LLVM 22 branch point
LLVM 22 branched yesterday so update o the branch point in preparation
for RC1 and devel/llvm22.
Sponsored by: DARPA, AFRL
devel/llvm1[4567]: keep backport patches local
The patches generated by adding .patch to a github commit URL are
unstable and the output of some of them changed recently. It's
concivable this will be fixed, but they probably won't make any
long term guarantees so store the patches in the ports tree instead of
downloading them.
PR: 292291
MFH: 2026Q1
Sponsored by: DARPA, AFRL
See also: https://github.com/orgs/community/discussions/184094
[Analysis] Fix missing destructor in CFG for C++20 range-for init-statement (#175859)
In C++20 range-based for loops, variables declared in the init-statement
were not correctly added to the CFG builder's local scope. Consequently,
implicit destructors for these variables were missing from the CFG.
This caused analyses relying on the CFG to incorrectly model the
lifetime of these variables. Specifically, Thread Safety Analysis
reported false positives for RAII locks declared in the init-statement.
Fix it by calling addLocalScopeForStmt for the init-statement in
CFGBuilder::VisitCXXForRangeStmt. This ensures destructors are correctly
inserted into the CFG.
Fixes: https://github.com/abseil/abseil-cpp/issues/1901
[DAG] computeKnownBits - add CTLS handling (#174824)
Add handling for CTLS using the same method as in
https://github.com/llvm/llvm-project/pull/174636.
Added tests to AArch64 and RISCV, but it seems that ARM is actually
resolving `llvm.arm.cls` to `clz`, so not tests added there.
protobuf py-protobuf: updated to [6.]33.4
33.4
Other
Refactor(bazel): publish a separate .tar.gz
Bazel: Remove hardcoded dependency on //:protoc from language runtimes
Uses/go.mk: Encourage version ranges
Refactor the version comments to make it clear that a version range
is always better than pinning to a specific version.
[LV] Vectorize conditional scalar assignments (#158088)
Based on Michael Maitland's previous work:
https://github.com/llvm/llvm-project/pull/121222
This PR uses the existing recurrences code instead of introducing a
new pass just for CSA autovec. I've also made recipes that are more
generic.