[WebAssembly] Fold vselect(cond, vnot(x), zero) to v128.andnot (#184949)
DAGCombiner canonicalizes `and(vnot(x), sext(cmp))` into `vselect(cmp,
vnot(x), zero)`. Without a dedicated ISel pattern, this falls through to
the generic vselect-to-bitselect lowering, producing `v128.not` +
`v128.bitselect`. This patch adds a higher-priority pattern that emits a
single `v128.andnot` instead, saving two instructions.
The direct `and(vnot(x), y)` pattern is already handled by the existing
`andnot` PatFrag. This patch covers the indirect path through
DAGCombiner's `and(x, sext(cmp))` → `vselect(cmp, x, zero)`
canonicalization, which obscures the `andnot` opportunity when `x` is
`vnot(y)`.
Assisted-by: Claude (Anthropic)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply at anthropic.com>
Defer HA session logout until after LUN swap to preserve FC paths
During failover, when the HA iSCSI session to the old ACTIVE drops,
SCST cascades and removes all LUN mappings that reference the dev_disk
passthrough device. If this happens before the dev_disk -> dev_vdisk
LUN replace, the tgt_dev and its ALUA filter are destroyed: ESXi
receives LUN NOT SUPPORTED (05/25/00) rather than the transitioning
sense and declares the path dead.
Fix: move reset_active (DLM cleanup + HA session logout) to after
become_active has replaced all LUN mappings. By the time dev_disk
detaches, no LUN references it, so the SCST cascade is harmless.
The ALUA tgt_dev filter stays intact throughout the replace window,
returning CHECK CONDITION 04/0A (transitioning) to FC initiators
until set_alua_active fires in the finally block.
Also remove the iscsi.scst.suspend / clear_suspend calls that
bracketed the LUN replace in become_active: they are no longer needed
because ALUA transitioning intercepts FC commands before they reach
[2 lines not shown]
[lldb] Support arm64e C++ vtable pointer signing (#187611)
When targeting arm64e, vtable pointers are signed with a discriminator
that incorporates the object's address
(PointerAuthVTPtrAddressDiscrimination) and class type
(PointerAuthVTPtrTypeDiscrimination).
I had to make a small change to clang, specifically in
getPointerAuthDeclDiscriminator(). Previously, that was computing the
discriminator based on getMangledName(). The latter returns the
AsmLabelAttr, which for functions imported by lldb, is prefixed with
`$__lldb_func`, causing a different discriminator to be generated.
[Hexagon] Add MC parser and AsmBackend coverage tests (#183954)
Add tests targeting HexagonAsmParser and HexagonAsmBackend with low
coverage:
- asm-parser-transforms.s: AsmParser instruction transformation paths
including tableidx, mpysmi immediate adjustment, asr with rounding, and
register pair transfers. Improves HexagonAsmParser.cpp line coverage
from 37.27% to 76.13%.
- asm-parser-vrcmpys.s: AsmParser vrcmpys register mapping for
single-register variants.
- branch-relax-far.s: AsmBackend branch relaxation exercising far-branch
expansion. Improves HexagonAsmBackend.cpp line coverage from 43.17% to
76.77%.
- directives-falign-subsection.s: MC ELF streamer .falign and
.subsection directive handling. Improves HexagonMCELFStreamer.cpp line
coverage from 63.85% to 90.77%.
libclc: Fix directly adding vector booleans
Vector compares return -1 instead of 1, so explicitly select a 0 or 1
instead of directly adding the result.
nodejs*: updated to 25.8.2, 24.14.1, 22.22.2, 20.20.2
Notable Changes
(CVE-2026-21710) use null prototype for headersDistinct/trailersDistinct (Matteo Collina) - High
(CVE-2026-21637) wrap SNICallback invocation in try/catch (Matteo Collina) - High
(CVE-2026-21717) test array index hash collision (Joyee Cheung) - Medium
(CVE-2026-21713) use timing-safe comparison in Web Cryptography HMAC and KMAC (Filip Skokan) - Medium
(CVE-2026-21714) handle NGHTTP2_ERR_FLOW_CONTROL error code (RafaelGSS) - Medium
(CVE-2026-21712) handle url crash on different url formats (RafaelGSS) - Medium
(CVE-2026-21716) include permission check on lib/fs/promises (RafaelGSS) - Low
(CVE-2026-21715) add permission check to realpath.native (RafaelGSS) - Low
[SPIRV] Add pass SPIRVEmitIntrinsics to new pass manager (#188285)
Registered SPIRVEmitIntrinsics with the new pass manager as
`spirv-emit-intrinsics`. The motivation for this is to allow it to be run from
`opt` as a standalone pass for testing purposes. A simple pipeline test
is also included to check that the registration works.
[MLIR] [Mem2Reg] Fix unused block argument removal logic (#188484)
There was a problem with the way Mem2Reg was removing unused block
arguments, as it was incorrectly assuming the reaching definition was
still available when connecting the successor operands but it may have
been removed as part of the mem2reg process. This approach instead
places successor operands eagerly, and removes them along with the block
argument if unused (similarly to how it was done before the region
support).
This also fixes what I think was a long-standing issue where a block
argument only used by operations that will be deleted would not be
considered unused.
Fixes #188252
Add support for anyAppleOS availability (#181953)
The number of Apple platforms has grown over the years, resulting in
availability annotations becoming increasingly verbose. Now that OS
version names have been unified starting with version 26.0, this patch
introduces a shorthand syntax that applies availability across all Apple
platforms:
```
// Declaration.
void foo __attribute__((availability(anyAppleOS, introduced=26.0)));
// Guard.
if (__builtin_available(anyAppleOS 27.0, *))
```
Implementation:
The `anyAppleOS` platform name is expanded at parse time into implicit
[31 lines not shown]
[lldb][NFC] Remove unused variables (#188385)
Remove unused local variable `s` in
GDBRemoteCommunication::CheckForPacket and unused member
`m_step_thread_idx` in CommandObjectThreadUntil.
[NewPM] Adds a port for AArch64PointerAuth (#188352)
Adds a standard NewPM port for AArch64PointerAuth.
No test updates since all `.mir` files referencing this pass run
combinations of passes, not all of which are ported.
[flang][OpenMP] Rename GetAllDesignators to GetTopLevelDesignators, NFC (#188520)
The function collects all top-level designators. Emphasize the "top
level" part for clarity.
[clang] Pragma for llvm.loop.licm.disable (#188108)
llvm.loop.licm.disable is already availabe at LLVM-IR level to disable
LICM per loop. This PR simply exposes that capability to the developers
at clang level.