[ELF] Reduce symbol partitions to shim binaries (#198718)
The experimental symbol partition feature can move arbitrary symbols and
input sections out of the main partition into named loadable partitions
that consumers extract with `llvm-objcopy --extract-partition`. It is
incompatible with many features, has seen no adoption beyond Chromium's
`build/extract_partition.py`. Chrome hasn't needed this feature for many
years.
The partitioning machinery (per-partition `MarkLive` runs, `moveToMain`,
cross-partition pull in `InputSection::replace`, per-symbol
dynsym/gnuhash/thunk-compat filters, `PartitionIndexSection`,
`copySectionsIntoPartitions`, etc.) does not pull its weight for that.
Remove the partitioning brain and keep a minimal shim shell.
`Symbol::partition` is deleted; every dynsym add goes to
`ctx.mainPart`. `ctx.partitions` wraps a `std::vector<Partition>`
whose iterator yields only the main partition; shim partitions live
in `storage[1..]` and are reached via `shims()`. The two paths that
[10 lines not shown]
[mlir][spirv] Fix `fp8` and `bf16` leaking into unsupported ops (#199102)
Including `SPIRV_AnyFloat` in the majority of types caused fp8 and bf16
to be allowed in ops that are not allowed by float8 and bfloat16
extensions. This patch tries to rectify to only allow fp8 and bf16 in
ops allowed by the respective specs. Additional tests have been also
added to increase the coverage with respect to those types.
Assisted-by: Codex + Claude Code
[Verifier] Add missing null-check. (#199170)
[Verifier] Add missing null-check.
visitProfMetadata's was using the result of dyn_extract without first
checkout that it's non-null. Thus one could crash the verifier by
providing invalid IR.
This bug was found by a large run of Opus 4.7 looking for bugs in LLVM.
[libc] Enforce standard identifier validation in hdrgen (#198971)
Implemented validation for standard identifiers in the hdrgen tool to
catch typos and unknown standards. Aggregated standards from all entity
types (macros, types, etc.) for validation, addressing a TODO in
header.py.
Added llvm_libc_ext, stdc_ext, and llvm_libc_stdfix_ext to the canonical
identifiers. Standardised invalid or inconsistently formatted standards
in several YAML files.
This enforces the correctness of any provided standards field but does
not yet require that every entity has one (many entities still inherit
standards from the header level).
Assisted-by: Automated tooling, human reviewed.
[CostModel][X86] Make avx512 inlane 2src shuffles cheaper that crosslane 2src shuffles (#199074)
256/512 variable mask shuffles are not going to sustain tp = 1 on all
avx512 targets - unlike immediate mask inlane shuffles
1src shuffles aren't much better, but there's additional special cases
that need handling for these
Noticed while triaging failed vectorcombine reduction folds due to weird
costs
[alpha.webkit.UncountedCallArgsChecker] Check CXXOperatorCallExpr's this argument (#198688)
This PR fixes the bug that we were not checking "this" parameter of
CXXOperatorCallExpr.
[webkit.UncountedLambdaCapturesChecker] Check lambdas in constructors and destructors (#198709)
This PR fixes the bug that lambda captures checkers don't check for
"this" pointer captured in a lambda inside C++ constructors and
destructors.
[webkit.UncountedLambdaCapturesChecker] Check every lambdas passed to makeVisitor (#198713)
This PR fixes the bug in UncountedLambdaCapturesChecker that we were
failing to check variable captures of a non-first lambdas passed to
WTF::makeVisitor. To support this, we store a SmallVector of
LambdaExpr's instead of a single LambdaExpr in LambdaOwnerMap.
[alpha.webkit.UncountedLocalVarsChecker] Some forms of mutating a guardian variable is ignored (#198950)
This PR fixes a bug in UncountedLocalVarsChecker that it was allowing
mutations to guardian variables within the same scope of a guarded raw
pointer/reference. Since mutating a guardian can affect the lifetime of
a guarded object, we must not consider it as a guardian variable for the
scope.
VisitCXXConstructExpr was just looking for smart pointer's move
constructor but any constructor which takes a guardian smart pointer
using a non-const function argument is problematic so detect all those
cases. Also add VisitCallExpr to detect all forms of function calls to
which a guardian variable is passed via a non-const argument. For
VisitCXXMemberCallExpr, we consider calling any non-const member
function on a guardian variable to be dangerous except conversion
operators (e.g. operator T()).
Update to Ruby 4.0.5
Fixes CVE-2026-46727: Use-after-free in pthread-based getaddrinfo timeout handler
Drop class.c patch added for 4.0.4, no longer needed with included rdoc update.
[AArch64] Combine A + zext(B) * C -> A - zext(B) * -C (#198488)
This converts `A + zext(B) * C` -> `A - zext(B) * -C` if C can be
negated in order to use umsubl.