Attributor: Hash all bits of the abstract attribute map keys (#241082)
The AA IDs are adjacent bytes and the positions of a value only differ
in the low bits, which the default hashes mostly ignore, so many AAMap
keys collide. Hash the full key instead.
attributor-light instruction counts (callgrind): -0.6% to -4.3%, full
attributor -0.5% to -1.5%. CTMark (-attributor-enable=light): O3
-0.01%, ThinLTO -0.03%.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
Revert "[libc][math] Correct tanhf16 subnormal rounding and range reporting" (#241362)
Reverts llvm/llvm-project#236480
Committed without pre-commit approval which in this case violates LLVM's
policies.
[CopyProf] Intercept new/delete and track per-object cost. (#235455)
This intercepts the C++ `new` and `delete` operators, so that all
heap memory owned by a copy is tracked.
Using per-object state tracking, reports now tell the user how much
accumulated memory a copy is worth and whether it allocated.
This is useful for filtering of reports.
RFC:
https://discourse.llvm.org/t/rfc-copysanitizer-csan-detecting-unneccessary-object-copies-at-runtime/91038
Stack: #237763 → #232851 → #235453 → #235454 → #235455 (this PR)
CodeGen: Use RuntimeLibcallsInfo for memset_pattern16
CodeGen passes shouldn't be using TargetLibraryInfo for functions they
will emit. Use RuntimeLibcallsInfo which knows how to insert the
correctly typed and annotated declaration.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
security/py-social-auth-core: Update to 5.2.0
* Adjust testsuite accordingly so that the results are successful
depending on the configuration.
* Note: This is an interim update to create a py-social-auth-core5 port
based on this, which is limited to the 5.x release series and adjust
CONFLICTS_INSTALL for future variants of py-social-auth-core.
Changelog since 5.0.1:
https://github.com/python-social-auth/social-core/blob/5.2.0/CHANGELOG.md
Approved by: ultima (maintainer, implicit)
MFH: 2026Q4
(cherry picked from commit f2ac829b1de5ba6aad4f98b553859f9ced4a1d73)
CodeGen: Require TargetMachine in PreISelIntrinsicLowering
It's not reasonable for the TargetMachine to be optional in a core
codegen pass, and several paths unconditionally used it. Move the
tests which ran the pass without a target into the X86 directory.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[IndVarSimplify] Use context to prove a narrow IV def non-negative
When IndVars widens an IV, it checks for each narrow def
(the IV and values computed from it) whether it is
non-negative on every iteration.
If it is, zext and sext of it are equal. Then when IndVars
idens the def's users, they can choose to use either
the sext or zext of the def.
Previously, we didn't use context to prove the non-negativity of def.
Now ask SCEV about the def non-negativity at its context -
the def instruction itself.
This allows SCEV to infer facts from the dominating guards and assumes.
This in turn allows eliminating unnecessary truncs/zexts. E.g. in
if (m > 0)
[9 lines not shown]
[IndVarSimplify][NFC] Add a negative test for zext elimination
Add a test for a zext of an nsw add of a sign-extended IV, where the
add may be negative.
Also rewrite a stale comment of an existing test.
Assisted-By: Claude
[IndVarSimplify][SCEV][NFC] Add tests for LFTR losing the constant max trip count
When LFTR of IndVars rewrites a loop exit like i >s C
to i + 1 == smax(start, C + 1),
SCEV's constant max backedge-taken count of the loop gets worse.
Add tests showing it.
Assisted-By: Claude
[LoopVectorize][NFC] Add tests for runtime checks with a widened IV index
In
if (start <u len && start - 32 <u len) // len >=s 0
for (int32_t i = start; i < n; i++) a[i] = a[i - 32];
i - 32 >=s 0, so the distance between a[i] and a[i - 32] is always 32.
If the loop has an i64 IV and i - 32 is computed in i64, it is
vectorized without runtime checks.
If i - 32 is computed in i32 and zero-extended, the vectorizer
emits an overflow check and an alias check.
Add tests for both forms.
Assisted-By: Claude
[BPF] Diagnose missing BTF array element types (#240464)
An array of C23 typeof(nullptr) has no BTF type ID for its elements.
Reading the uninitialized element ID can make the emitted array name
itself as its element type.
Diagnose the missing element ID and use the underlying type name when an
atomic qualifier is present. Register the array during error recovery so
an enclosing struct can finish resolving its member without a second
diagnostic.
Assisted-by: OpenAI Codex
Revert "[libc][math] Correct expm1f16 subnormal rounding and range reporting" (#241360)
Reverts llvm/llvm-project#236310
Committed without pre-commit approval which in this case violates LLVM's
policies.
[mlir][memref] Fix folding alias ops into transfers masked by vector.mask (#239288)
`-fold-memref-alias-ops` folds a `subview`, `expand_shape` or
`collapse_shape` into a `vector.transfer_read`/`transfer_write` by
creating the new index ops right before the transfer. When the transfer
is inside `vector.mask`, those ops end up in the mask region and the
output fails to verify:
```
error: 'vector.mask' op expects only one operation to mask
```
This patch creates the index ops above the `vector.mask` instead. As
with a mask operand, the `expand_shape` and `collapse_shape` folds then
don't use a disjoint linearization, since a masked transfer may start
out of bounds. There is one test per pattern.
The SuperVectorize switch to masking (#227821) hits this, because it
wraps transfers in `vector.mask`.
[3 lines not shown]
NAS-145199 / 28.0.0-BETA.1 / Allow configured origins to read /api/versions for TrueNAS Connect (#20182)
nginx answers CORS on /api/versions only when the system is registered
with TrueNAS Connect, and only for the TNC web app (plus `ng serve` on
dev and staging). A TNC client run against an unregistered system (an
ephemeral TNC stack, local development, CI) cannot read the versions, so
@truenas/api-client falls back to v25.10.0 on systems that serve newer
API versions.
* tn_connect gains `allowed_origins`, set with the private
tn_connect.update_environment. Each must be an origin exactly as a
browser sends it: https with a lowercase host name, or http to localhost
or 127.0.0.1, with an optional port and no path. Unlike the endpoints it
may change while TNC is enabled. update_environment now reloads nginx
after a write, since the endpoints and the origins both reach its CORS
maps.
* /api/versions answers CORS, with Vary: Origin, when the system is
registered or allowed_origins is not empty. Its map lists the allowed
origins and falls back to the existing $allow_origin. /_download keeps
[6 lines not shown]
TableGen: Error on allocatable register classes with an empty allocation order (#241006)
A register can never be allocated from a class with an empty
allocation order. This can happen when an alternative order excludes
every member, or when an inferred class inherits such an order from
its super class.
Classes with no members are exempt, since AMDGPU's VReg_1 is a verfy
hacky, intentionally empty allocatable class.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[mlir][vector] Introduce `AddContractionOpRewritePattern` (#240796)
Several patterns that transform `vector.contract` require the `ADD`
combining kind and repeat the same check.
Introduce `AddContractionOpRewritePattern` to centralize this check.
The base class rejects non-ADD contractions before delegating to
`matchAndRewriteAddContractOp`, allowing derived patterns to assume
addition semantics. Migrate the applicable patterns to this base class.
Also:
* Add `ContractionOp::isAddKind()` for checks outside the new pattern base.
* Replace an if-else chain with a switch in floating-point reduction
lowering to LLVM.
Part of #234238
[AMDGPU] Price misaligned flat and LDS accesses with the LDS misaligned bug
In WGP mode on subtargets with the LDS misaligned bug, a flat access is
split into pieces no wider than its alignment and no narrower than 4
bytes, and an LDS access aligned below 4 bytes uses 8-byte pieces as one
aligned to 4 does.