[AArch64][GlobalISel] Reassociate add sub mul. (#180753)
This is a port of performSubAddMULCombine from D143143. The mid end will
reassociate sub(sub(x, m1), m2) to sub(x, add(m1, m2)). This
reassociates it back to allow the creation of more mls instructions.
handbook/advanced-networking: Add ip6 to bridging
Add example for assigning a dynamic IPv6 address to a bridge interface
and clarify packet filtering behavior.
Reviewed by: madpilot, ziaee
Closes: https://github.com/freebsd/freebsd-doc/pull/603
[libc++] Memoise `size()` in `vector::__assign_with_size` (#180288)
This is an optimisation from the size-based vector project that's
applicable to all vector implementations.
[Polly][ScopInfo] Lazy Scop instantiation (#179535)
The old NPM was using ScopInfo pass introduced in
https://reviews.llvm.org/D20962, which in contrast to the LPM was using
ScopInfoRegionPass. ScopInfo was instantiating all Scop objects
immediately. After codegenning, all Scop objects need to be recomputed
anyway, making this approach wastful. The PhaseManager inherited this
behaviour from the NPM, leading to some concerns.
Replace the instantiate-all behavior of ScopInfo with an on-demand
instantiation. SCoPs now must be iterated using ScopDetection instead
using ScopInfo, but only some unsed legacy NPM passes (now removed) were
doing that anyway.
[ELF] Add target-specific relocation scanning for Hexagon (#181596)
Implement Hexagon::scanSectionImpl, following the pattern established
for x86 (#178846) and PPC64. This merges the getRelExpr and TLS handling
for
SHF_ALLOC sections into the target-specific scanner, enabling
devirtualization and eliminating abstraction overhead.
- Inline relocation classification into scanSectionImpl with a switch
on relocation type, replacing the generic rs.scan() path.
- Use processR_PC/processR_PLT_PC for common PC-relative and PLT
relocations.
- Handle GD PLT relocations inline, always setting NEEDS_PLT. Remove
the R_HEX_GD_PLT special case from process().
- Handle TLS IE, GD GOT, and TPREL directly, bypassing
handleTlsRelocation. Remove EM_HEXAGON from the execOptimize check.
- Simplify getRelExpr to only handle relocations needed by
relocateNonAlloc and scanEhSection.
[X86] Correctly call 16 byte atomic helpers on x86_64 Windows (#181356)
On x86_64 Windows, i128 values are returned in xmm0, and as arguments to
functions, they are passed indirectly (rather than in a GPR pair) - see
WinX86_64ABIInfo::classify in Clang [1].
When AtomicExpandPass generates a libcall, it normally generates one
with i128 arguments and return types. This type isn't lowered correctly
(it ends up passed or returned in a pair of GPRs).
To fix this issue, make AtomicExpandPass use the v2i64 type instead of
i128 here, just like Clang would do for an explicit function call; this
type ends up lowered correctly.
This fixes https://github.com/mstorsjo/llvm-mingw/issues/538 and
https://github.com/llvm/llvm-project/issues/136428.
[1]
https://github.com/llvm/llvm-project/blob/llvmorg-21.1.8/clang/lib/CodeGen/Targets/X86.cpp#L3390-L3408
[SLP]Fix revec in split nodes
Initially split nodes do not support vector entries in revec mode, patch
fixes the issue by adding analysis for the scale factor
Fixes #181546
[clang][ssaf] Add EntityLinkage data structure (#181718)
This commit introduces the `EntityLinkage` class to represent the
linkage properties (`None`, `Internal`, `External`) of entities in the
SSAF framework and integrates it into the `TUSummary` class to enable
tracking this information across translation units.
rdar://162571047
Assisted-By: Claude
[CI][ScriptedBuilder] Avoid python 3.12-only option (#181746)
The shutil.rmtree(onexc=) parameter was only added in Python 3.12. Use
onerror= instead whose callback signature takes a different third
parameter which is ignored anyway.
Merge tag 'slab-for-7.0-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab
Pull more slab updates from Vlastimil Babka:
- Two stable fixes for kmalloc_nolock() usage from NMI context (Harry
Yoo)
- Allow kmalloc_nolock() allocations to be freed with kfree() and thus
also kfree_rcu() and simplify slabobj_ext handling - we no longer
need to track how it was allocated to use the matching freeing
function (Harry Yoo)
* tag 'slab-for-7.0-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab:
mm/slab: drop the OBJEXTS_NOSPIN_ALLOC flag from enum objext_flags
mm/slab: allow freeing kmalloc_nolock()'d objects using kfree[_rcu]()
mm/slab: use prandom if !allow_spin
mm/slab: do not access current->mems_allowed_seq if !allow_spin
[llvm][clang] Revert split stacks implementation from runOnNewStack (#181743)
This was potentially causing Clang to emit out of stack space warnings
in rare cases, so I'm reverting it until I can verify the issue. This
keeps the API change as that's known not to be the issue.
[NFC][CodeGen] Minor code cleanup in MIR FrameIndex verification (#181551)
Use variable names conforming to LLVM CS and shorten the code a bit
using `dyn_cast_if_present`.