[MergeFunctions] Fix merging functions with different KCFI type identifiers (#217665)
MergeFunctions currently merges functions with identical bodies even
when
their function-level !kcfi_type metadata contains different type
identifiers.
This can redirect calls or function pointers to a function with a
mismatched
KCFI type identifier, potentially causing KCFI checks to fail at
runtime.
Compare function-level !kcfi_type metadata in FunctionComparator so that
functions with different KCFI type identifiers are not merged.
Add a minimal regression test covering two identical functions with
different
KCFI type identifiers.
Fixes #217629
[AArch64] Suboptimal assembly for u128 x * x (#214796)
This PR optimizes the AArch64 backend for 128-bit integer squaring
(`u128 x * x`).
It updates the instruction selection logic to combine `(A + B) + B` into
`A + (B << 1)`. This allows the compiler to emit a single, optimal `add
... lsl #1` instruction instead of multiple separate `add` instructions.
A baseline test was added in the first commit, and the optimization is
provided in the second commit to clearly highlight the codegen
improvements.
Fixes #213775
ui: maximize modal shortcut should also evaluate first visible when there are multiple tabs
(cherry picked from commit 4a584f95b3833543bb0a3cb0ae71cedccae36ac5)
[MLIR][X86] Track shuffled write operand updates (#218936)
Notify pattern rewrite listeners while replacing the operands of both
write-like users after accumulator shuffling.
Add focused coverage that does not depend on the separate accumulator
rewrite.
Assisted-by: Codex
[mlir][OpenACC][OpenMP] Migrate to use explicit discardable/inherent attribute APIs (#218901)
Use discardable attribute APIs and typed operation accessors throughout
the OpenACC and OpenMP dialects, conversions, translation, utilities,
and tests.
Keep ComputeRegionOp inherent properties in the property dictionary and
discardable attributes in the attribute dictionary.
Assisted-by: Codex
[SelectionDAG] Legalize non-divisible scalable vector widening (#218777)
Enable DAGTypeLegalizer::ModifyToType to widen scalable vectors whose
element counts are not integer multiples. Split the source and
destination into their largest common scalable subvector type, extract
the source parts, append poison or zero fill parts, and concatenate
them.
[LLVM][SVE] Add dedicated intrinsics to cast between svcount_t and svbool_t. (#218667)
This makes the casting behaviour more explicit:
> to/from_svbool : lane-count changing casts
> to/from_svcount : reinterpretation casts
Firewall: Rules: Add received-on interface keyword (as interface origin) (#10797)
Allow outbound rules to match the interface where traffic originally entered,
making address-independent security zone policies possible.
Multiple rule and origin interfaces are supported. Origin matching is limited
to outbound rules, while inversion requires exactly one origin interface.
Leaving the origin empty preserves the existing rule behavior.
(cherry picked from commit 79bb2720338f3157fec494071a06d7e9c6dec4b8)
Firewall: Rules: emit gateway debug message in block rules only when gateway was not empty (#10799)
(cherry picked from commit 852228013f7ee83da4db4fcf452fa4c2f54786f7)
snd_uaudio: recognize hardware sidetone as a monitor
The Logitech H390, for instance, has the following interface layout:
~~
7 INPUT 34 INPUT 10 INPUT
Mic (0x201) Mic (0x201) USB Stream (0x101)
| | |
v v |
19 FEATURE 35 FEATURE |
| | |
v v |
25 EXTENSION +------> 36 MIXER <---+
| |
v v
13 OUTPUT 22 FEATURE
USB Stream (0x101) |
v
16 OUTPUT
[29 lines not shown]
[libc] Enable bare-metal hermetic tests on Arm (#207361)
This provides missing components required to run LLVM libc hermetic
tests, for example, with QEMU:
- Redirect of output, time and exit to semihosting.
- Linker script.
- Extra LIBC_MATH_ASSUME_ROUND_NEAREST_ONLY setting for
LIBC_CONF_MATH_OPTIMIZATIONS to make hardfp tests pass.
[CIR] Drop the callconv opt-out from 4 more CIR tests (#218785)
These four CIR tests now compile and check clean with x86_64
calling-convention lowering on, unblocked by the packed-record (#218505)
and vptr-record (#218457) work. Stripping the flag moved zero CHECK
lines: the output the pass produces for these four is exactly what was
already pinned.
Assisted-by: Cursor / claude-opus-5
[MachinePipeliner] Increase the default maximum MII to 256
The pipeliner rejects a loop whose minimum initiation interval exceeds
-pipeliner-max-mii. Its default of 27 suits targets with short instruction
latencies, but is too small for others: on AMDGPU a couple of MFMA
instructions already push the MII past it, so the loop never pipelines.
Increase the default limit from 27 to 256. An explicit -pipeliner-max-mii
still overrides the default.
[AMDGPU] Configure the software pipeliner policy (#212539)
```
[AMDGPU] Configure the software pipeliner policy
Set the pipeliner policy in overridePipelinerPolicy() to opt into the generic
register-pressure detector.
Schedules exceeding the target-provided pressure-set limits are rejected and
retried at a higher II.
```
[libc++][NFC] Refactor new.ipp so the _impl functions take a failure mode argument (#218648)
This avoids duplicating the failure path everywhere we use these
functions. It also makes it more explicit what the intended failure path
is.
[CIR] Regenerate CHECK lines for 8 more callconv opt-out tests
These 8 CIR tests compile clean with x86_64 calling-convention lowering
on, but their CHECK lines still pinned the pre-coercion CIR: raw record
types in signatures, plain by-value loads for temporaries with a
non-trivial destructor, and matching store/load pairs for empty
records. The pass now emits the ABI-correct shape instead: sret return
parameters, a dropped or byref-marked argument for records that carry
no data or that need pass-by-reference, and a `#cir.poison` placeholder
where a value the pass ignores used to be stored.
Assisted-by: Cursor / claude-opus-5