[clangd] Null-check AutoTypeLoc in CollectExtraHighlightings::VisitDeclaratorDecl (#207323)
A Decl's getType() can have a getContainedAutoType() without
its TypeSourceInfo's type having one, because the two types
can differ in type sugar such as DecltypeType which
getContainedAutoType[Loc]() deliberately does not look through.
Fixes https://github.com/llvm/llvm-project/issues/207139
[DA] Rewrite BanerjeeMIV test with safe APInt interval arithmetic
The old banerjeeMIVtest computed inequality bounds using SCEV
arithmetic on 64-bit integers. Intermediate operations like
$(A^{-} - B^{+}) \times Iterations$ could overflow i64 even when all individual
coefficients and loop bounds fit, producing unsound results.
Replace the symbolic bound machinery with a self-contained APInt
interval arithmetic implementation. Key design decisions:
- BanerjeeInterval holds [Lower, Upper] signed-inclusive bounds.
Operations use APInt arithmetic at WideBits, chosen to guarantee no
intermediate overflow:
$$
WideBits = max(8, 2 \times BaseBits + MaxLevels + 8)
$$
This is provably sufficient, each term product needs at most `2 \times BaseBits + 1`
bits, and summing across MaxLevels terms needs at most ceil($\log_2 (MaxLevels)$)
extra bits.
[15 lines not shown]
libxmlb: update to 0.3.28.
Version 0.3.28
~~~~~~~~~~~~~~
Released: 2026-06-30
New Features:
- Automatically add system locales when using native-langs (Richard Hughes)
- Lower the Meson and GLib deps for RHEL-8 (Richard Hughes)
Bugfixes:
- Lazy clear opcode tokens for a ~2% speedup (Richard Hughes)
- Speed up negative queries by 11% by defer creating the results objects (Richard Hughes)
- Speed up predicates with no bindings by 9% (Richard Hughes)
- Speed up the no-results query by 2.5% by using a constant error (Richard Hughes)
[Hexagon] Allow reservation of caller saved registers via -ffixed-rXX (#205733)
Previously, hexagon allowed only callee saved registers to be reserved
since reserving caller saved regs can create problems, since it cannot
be sure that the callee (from a different module) also reserves the
register.
The responsibility of reserving register and managing it is now on the
user. However, a warning will be displayed if the user tries to reserve a
caller saved register.
---------
Co-authored-by: quic-santdas <quic_santdas at qti.qualcomm.com>
jansson: update to 2.15.1.
Version 2.15.1
==============
Released 2026-06-30
* Fixes:
- Include the object key or array index in unpack type mismatch error
messages (@cwalther in #731)
- Reject negative string length in the `json_pack` `s#` and `+#` formats
(@akheron in #740)
- Limit recursion depth in dump, equal and deep copy to prevent stack
overflow (@akheron in #741)
* Build:
- Only export symbols starting with `json_` and `jansson_` from the CMake
[6 lines not shown]
[InstCombine] Skip redundant demanded element queries in insert chains (#205948)
Avoid re-running `SimplifyDemandedVectorElts` on intermediate
`insertelement` chain nodes when a bounded scan proves the top-level
all-lanes query cannot change the IR.
The skip is implemented inside the `InsertElement` case of
`SimplifyDemandedVectorElts` and is limited to the top-level all-lanes
query (`Depth == 0 && DemandedElts.isAllOnes()`). The bounded scan
matches the existing SDVE depth window and only skips chains with
distinct in-range constant insert indices. This keeps the normal SDVE
path for duplicate indices, variable indices, out-of-range indices,
multi-use chains, and the final chain root.
This was motivated by a cutile matmul compile-time case where loop
unrolling produced 128-lane vector insert/extract chains. Before this
change, InstCombine repeatedly invoked SDVE on intermediate
`insertelement` nodes in those chains. On the representative IR, the
affected InstCombine pass time went from about `44.9 ms` to `29.8 ms`,
[4 lines not shown]
www/deno: fix three patch correctness bugs found in review
- patch-cli_standalone_binary.rs: restore Linux ELF target support by
using || instead of replacing the linux check with freebsd
- patch-ext_os_lib.rs: fix FreeBSD rss() return type usize -> u64 to
match all other platforms; use %%PREFIX%% placeholder so post-patch
REINPLACE_CMD correctly substitutes the install prefix at build time
- Makefile: add s|%%PREFIX%%|${PREFIX}| substitution for ext/os/lib.rs
Co-Authored-By: Claude Sonnet 4.6 <noreply at anthropic.com>
[RISCV] Remove -riscv-v-fixed-length-vector-lmul-max option (#207312)
Whilst reviewing https://github.com/llvm/llvm-project/pull/207254, I
threw claude at it and it found a crash when passing in a non-default
-riscv-v-fixed-length-vector-lmul-max flag.
This option was added 5 years ago around the time initial fixed vector
support was being added in a719b667a9794, and IIUC it was added so that
support for more LMULs could be added over time.
We don't have any substantial codegen testing for it and I couldn't find
any downstream users either. So rather than trying to fix
https://github.com/llvm/llvm-project/pull/207254 to handle it it seems
easier just to remove it now that fixed vector support for RVV has
matured.
[InstSimplify] Fold value-preserving zext/sext of trunc (#204089)
Fold a value-preserving `zext (trunc nuw X)` / `sext (trunc nsw X)` back
to
`X` in `simplifyCastInst` (when the trunc source type equals the extend
result type and the no-wrap flag guarantees the round-trip is identity).
After indvars canonicalizes a min-index loop, the running-index select
has a
`trunc nuw nsw i64 %iv to i32` on its true side while `arr[i]` is
addressed
directly with the i64 `%iv`. When PHI-translating the select-dependent
address along the backedge (see #203863), the true side becomes
`gep base, zext nneg (trunc nuw %iv)`, which has no matching instruction
in
the loop, so the select dependency is never formed and the redundant
load
survives.
[11 lines not shown]
graphics/fotocx: the port had been updated to version 26.6.1
Move KERN_PROC_PATHNAME sysctl(3) call into its own function
and use it where applicable; this further reduces the number
of linuxisms in the program.
Reported by: portscout